Bộ vi xử lý - 8086 Đơn vị chức năng
Bộ vi xử lý 8086 được chia thành hai đơn vị chức năng, tức là EU (Đơn vị thực hiện) và BIU (Đơn vị Giao diện Bus).
EU (Đơn vị thực thi)
Đơn vị thực thi cung cấp hướng dẫn cho BIU nêu rõ nơi lấy dữ liệu và sau đó giải mã và thực hiện các hướng dẫn đó. Chức năng của nó là điều khiển các hoạt động trên dữ liệu bằng cách sử dụng bộ giải mã lệnh & ALU. EU không có kết nối trực tiếp với các bus hệ thống như trong hình trên, nó thực hiện các hoạt động qua dữ liệu thông qua BIU.
Bây giờ chúng ta hãy thảo luận về các bộ phận chức năng của bộ vi xử lý 8086.
ALU
Nó xử lý tất cả các phép toán số học và logic, như các phép toán +, -, ×, /, OR, AND, NOT.
Cờ Đăng ký
Nó là một thanh ghi 16 bit hoạt động giống như một flip-flop, tức là nó thay đổi trạng thái của nó theo kết quả được lưu trữ trong bộ tích lũy. Nó có 9 lá cờ và chúng được chia thành 2 nhóm - Cờ điều kiện và Cờ kiểm soát.
Cờ có điều kiện
Nó đại diện cho kết quả của lệnh số học hoặc logic cuối cùng được thực hiện. Sau đây là danh sách các cờ điều kiện:
Carry flag - Cờ này chỉ ra điều kiện tràn đối với các phép toán số học.
Auxiliary flag- Khi một thao tác được thực hiện tại ALU, nó dẫn đến một chuyển động từ ngòi dưới (tức là D0 - D3) đến ngòi trên (tức là D4 - D7), khi đó cờ này được thiết lập, tức là mang theo bit D3 cho D4 là Cờ AF. Bộ xử lý sử dụng cờ này để thực hiện chuyển đổi nhị phân sang BCD.
Parity flag- Cờ này được sử dụng để chỉ ra tính chẵn lẻ của kết quả, tức là khi 8 bit bậc dưới của kết quả chứa số chẵn là 1, thì Cờ chẵn lẻ được thiết lập. Đối với số lẻ của 1, Cờ chẵn lẻ được đặt lại.
Zero flag - Cờ này được đặt thành 1 khi kết quả của phép toán số học hoặc logic bằng 0, nếu không nó được đặt thành 0.
Sign flag - Cờ này giữ dấu hiệu của kết quả, tức là khi kết quả của phép toán là âm, thì cờ dấu được đặt thành 1 khác được đặt thành 0.
Overflow flag - Cờ này thể hiện kết quả khi vượt quá dung lượng hệ thống.
Cờ kiểm soát
Cờ điều khiển kiểm soát các hoạt động của đơn vị thực thi. Sau đây là danh sách các cờ điều khiển:
Trap flag- Nó được sử dụng để điều khiển từng bước và cho phép người dùng thực hiện một lệnh tại một thời điểm để gỡ lỗi. Nếu nó được thiết lập, thì chương trình có thể chạy ở chế độ một bước.
Interrupt flag- Là cờ cho phép / vô hiệu hóa ngắt, tức là dùng để cho phép / cấm ngắt chương trình. Nó được đặt thành 1 cho điều kiện kích hoạt ngắt và đặt thành 0 cho điều kiện ngắt ngắt.
Direction flag- Nó được sử dụng trong hoạt động chuỗi. Như tên cho thấy khi nó được đặt thì các byte chuỗi được truy cập từ địa chỉ bộ nhớ cao hơn đến địa chỉ bộ nhớ thấp hơn và ngược lại.
Đăng ký mục đích chung
Có 8 thanh ghi mục đích chung, tức là, AH, AL, BH, BL, CH, CL, DH và DL. Các thanh ghi này có thể được sử dụng riêng lẻ để lưu trữ dữ liệu 8 bit và có thể được sử dụng theo cặp để lưu trữ dữ liệu 16 bit. Các cặp thanh ghi hợp lệ là AH và AL, BH và BL, CH và CL, DH và DL. Nó được gọi lần lượt là AX, BX, CX và DX.
AX register- Nó còn được gọi là thanh ghi tích lũy. Nó được sử dụng để lưu trữ các toán hạng cho các phép toán số học.
BX register- Nó được sử dụng như một thanh ghi cơ sở. Nó được sử dụng để lưu trữ địa chỉ cơ sở bắt đầu của vùng bộ nhớ trong phân đoạn dữ liệu.
CX register- Nó được gọi là bộ đếm. Nó được sử dụng trong lệnh lặp để lưu trữ bộ đếm vòng lặp.
DX register - Thanh ghi này được sử dụng để giữ địa chỉ cổng I / O cho lệnh I / O.
Thanh ghi con trỏ ngăn xếp
Nó là một thanh ghi 16 bit, giữ địa chỉ từ đầu đoạn đến vị trí bộ nhớ, nơi một từ được lưu trữ gần đây nhất trên ngăn xếp.
BIU (Đơn vị giao diện xe buýt)
BIU đảm nhận tất cả dữ liệu và chuyển địa chỉ trên các bus cho EU như gửi địa chỉ, tìm nạp các lệnh từ bộ nhớ, đọc dữ liệu từ các cổng và bộ nhớ cũng như ghi dữ liệu vào các cổng và bộ nhớ. EU không có kết nối hướng với Xe buýt Hệ thống nên điều này có thể xảy ra với BIU. EU và BIU được kết nối với Bus nội bộ.
Nó có các phần chức năng sau:
Instruction queue- BIU chứa hàng đợi lệnh. BIU nhận tối đa 6 byte lệnh tiếp theo và lưu trữ chúng trong hàng đợi lệnh. Khi EU thực thi các lệnh và sẵn sàng cho lệnh tiếp theo của nó, thì nó chỉ cần đọc lệnh từ hàng đợi lệnh này, dẫn đến tốc độ thực thi tăng lên.
Tìm nạp lệnh tiếp theo trong khi lệnh hiện tại thực thi được gọi pipelining.
Segment register- BIU có 4 bus phân đoạn, tức là CS, DS, SS & ES. Nó giữ các địa chỉ của lệnh và dữ liệu trong bộ nhớ, được bộ xử lý sử dụng để truy cập các vị trí bộ nhớ. Nó cũng chứa 1 IP thanh ghi con trỏ, giữ địa chỉ của lệnh tiếp theo được EU thực thi.
CS- Nó là viết tắt của Code Segment. Nó được sử dụng để định địa chỉ một vị trí bộ nhớ trong đoạn mã của bộ nhớ, nơi chương trình thực thi được lưu trữ.
DS- Nó là viết tắt của Data Segment. Nó bao gồm dữ liệu được chương trình sử dụng và được truy cập trong phân đoạn dữ liệu bằng địa chỉ offset hoặc nội dung của thanh ghi khác có địa chỉ offset.
SS- Nó là viết tắt của Stack Segment. Nó xử lý bộ nhớ để lưu dữ liệu và địa chỉ trong quá trình thực thi.
ES- Nó là viết tắt của Extra Segment. ES là phân đoạn dữ liệu bổ sung, được sử dụng bởi chuỗi để chứa dữ liệu đích bổ sung.
Instruction pointer - Là thanh ghi 16 bit dùng để giữ địa chỉ của lệnh tiếp theo sẽ được thực hiện.