- Tôi dự định sắp xếp hồ sơ học tập hợp ngữ và giao diện máy vi tính. Phần này giải thích cấu trúc, chức năng cơ bản và đặc điểm của 8086CPU.
- Tài liệu tham khảo
- Xidian "Nguyên tắc máy vi tính và thiết kế hệ thống" Chu Jiashe
- Đại học Giao thông Tây An "Nguyên tắc máy vi tính và công nghệ giao diện"
- Sách giáo khoa "Ngôn ngữ hợp ngữ và công nghệ giao diện" Wang Rangding
- Rùa Nhỏ "Ngôn ngữ hội"
1. Cấu trúc bên ngoài của bộ vi xử lý
1.1 Ghim
Cấu trúc bên ngoài là các chân đầu vào và đầu ra được đóng gói. 8086/8088 có 40 chân.
- Các bus dữ liệu bên trong và bên ngoài chip 8086 đều là 16 bit
- 8088 có 16 bit trên chip và 8 bit ngoài chip
Như đã đề cập trong phần giới thiệu trước, một số chân được dành riêng và một số chân được ghép kênh cần phải được nắm vững.
Các chân chức năng này của CPU:
- Trao đổi thông tin bằng trí nhớ
- Trao đổi thông tin với các thiết bị I/O (giao diện)
- Nhập và xuất thông tin cần thiết
1.2 Chân điều khiển
Hãy lấy một ví dụ để giải thích các chân này:
-
Khi CPU ghi dữ liệu ra bên ngoài (giao diện bộ nhớ/IO), chân WR trong hình trên sẽ hoạt động (mức thấp).
RD là tín hiệu đọc.
-
Điểm phân biệt bộ nhớ vận hành và giao diện I/O là chân M/IO.
-
Trên cơ sở này, các mạch logic có thể được thiết kế để điều khiển những thứ cụ thể hơn, ví dụ: kết nối WR và M/IO với cổng OR có thể tạo ra tín hiệu IOW, v.v.
1.3 Mã pin địa chỉ
A. Không gian đánh địa chỉ
8086CPU có 20 dòng địa chỉ A 19 A16, A15 A 0, có thể xử lý không gian byte \(2^{20}\), tức là không gian 1M, kích thước không gian địa chỉ là 1 MB.
B. Khái niệm cổng IO
- Trong quá trình thiết kế hệ điều hành, các cổng thường được nhắc đến ở phần ngoại vi.
-
- Trạng thái của thiết bị ngoại vi được lưu trong thanh ghi cổng trong mạch giao diện. Nếu CPU không giao tiếp với giao diện, thanh ghi cổng vẫn ở trạng thái trở kháng cao và không xuất hoặc nhập từ bên ngoài/bên trong.
- Khi địa chỉ trên bus địa chỉ là địa chỉ của thanh ghi cổng giao diện (đã chọn), thông tin sẽ truyền vào CPU thông qua bus dữ liệu.
Tranh chấp bus: Nhiều cổng thiết bị được kích hoạt đồng thời.
Cổng được hiển thị ở góc dưới bên phải của hình bên dưới:
- Cổng nhập dữ liệu
- cổng lệnh
- Cổng đầu vào trạng thái
Cụ thể, các chip ngoại vi đều có sách hướng dẫn sử dụng. Khi vận hành card đồ họa, chúng ta cần kiểm tra các sách hướng dẫn liên quan đến VGA. Chuột và bàn phím được quản lý bởi một con chip khác.
Sách hướng dẫn sẽ giải thích chi tiết chức năng của cổng và bạn chỉ cần sử dụng hướng dẫn để gán giá trị cho cổng trong chương trình.
C. Địa chỉ thống nhất và địa chỉ độc lập
Như đã đề cập ở trên, một cổng IO chiếm ít nhất một địa chỉ IO - địa chỉ cổng IO. Tùy thuộc vào việc địa chỉ cổng và bộ nhớ có được xử lý cùng nhau hay không, có:
-
Địa chỉ thống nhất
- Nhược điểm: Tốn dung lượng bộ nhớ.
- Ưu điểm: Trình điều khiển IO dễ viết và linh hoạt.
- Ví dụ: dãy 51.
-
Chuẩn bị độc lập.
- Ưu điểm: Tiết kiệm không gian bộ nhớ.
- Nhược điểm: Cần nhiều bộ nhớ để vận hành các lệnh IO và lập trình IO không linh hoạt.
- Ví dụ: 8086.
- Các lệnh truy cập bộ nhớ IO của x86 là vào/ra
Đưa ra một ví dụ.
Địa chỉ của cổng I/O là 2000H. Nếu bạn muốn xuất dữ liệu ra cổng, hợp ngữ phải được viết như sau:
mov AL,01H ; Đây là lượng dữ liệu được xuất ra, nó chỉ mang tính chất tham khảo; trong khóa học này, hãy nhấp vào đèn ở đây mov DX,2000H mov DX,AL ; dấu ngoặc vuông
2. Cấu trúc bên trong của bộ vi xử lý
2.1 Chức năng
2.2 Cấu trúc
Bất kể model CPU nào, về cơ bản nó đều có cấu trúc bên trong như sau:
-
ALU: các phép toán số học và logic bắt buộc.
-
Thanh ghi địa chỉ có thể hoạt động như một thanh ghi dữ liệu.
Thanh ghi dữ liệu không thể hoạt động như thanh ghi địa chỉ.
-
Bộ điều khiển: Chịu trách nhiệm tìm nạp các lệnh, đặt chúng vào thanh ghi lệnh và giải mã chúng.
-
Logic điều khiển I/O: Xử lý I/O bên ngoài để CPU có thể đáp ứng các yêu cầu ngắt do thiết bị I/O đưa ra.
2.3 Giải thích bộ điều khiển
Phần này thực ra không khác mấy so với nhóm tính toán nên được hiểu kết hợp với ý tưởng “tìm nạp và thực thi” của CPU.
Sau khi biết được điều này, tôi đột nhiên muốn xem lại đường ống Verilog hay gì đó.
Bởi vì sơ đồ trên vẫn còn rất chung chung nên cách đánh giá và cách kiểm soát thời gian vẫn chưa được đề cập. Đợi một lát là học xong phần giao diện.
Hình trên chưa hoàn chỉnh. Nếu dữ liệu được lấy ra khỏi bộ nhớ thay vì hướng dẫn, nó sẽ được đưa trực tiếp vào thanh ghi dữ liệu hoặc thanh ghi được chỉ định (nó không nằm trong phạm vi của bộ điều khiển).
2.4 Ngăn xếp
Thông tin bổ sung từ Ji Cao:
- Khi nói về heap, cụ thể là heap
- Khi chúng tôi nói ngăn xếp, chúng tôi có nghĩa là ngăn xếp.
-
Ngăn xếp nằm trong không gian bộ nhớ, kích thước và vị trí của nó có thể lập trình được.
-
Ngăn xếp trong 8086 phải hoạt động trên cơ sở từ.
-
Hướng dẫn đại diện cho hoạt động ngăn xếp là.
push ax pop ax ; Nếu đó là thao tác từ được chỉ định bởi 8086, thanh ghi đích không thể là AL
-
Thanh ghi địa chỉ cơ sở ngăn xếp: sp, ban đầu được đặt ở dưới cùng của ngăn xếp +1 (nghĩa là đơn vị lưu trữ xa hơn từ dưới cùng của ngăn xếp). Vị trí này được thiết lập bởi chương trình.
-
Nếu bạn làm như sau:
đẩy rìu bước 1 đẩy bx bước 2;
Trong bước đầu tiên, sp đầu tiên bỏ trống một từ bằng -2, sau đó AX được chia thành 8 bit cao và thấp và được lưu trữ trong các đơn vị lưu trữ cao và thấp của từ trống này.
Bước 2 Lặp lại bước 1.
Nếu bạn muốn đưa giá trị vào ngăn xếp thì thực hiện quy trình ngược lại ở trên, trước tiên hãy lấy giá trị ở trên cùng của ngăn xếp, sau đó là sp+2.
-
tràn ngăn xếp:
- Khi bạn tiếp tục đẩy và thêm dữ liệu vào vùng ngăn xếp, vượt quá không gian được phân bổ của ngăn xếp (vượt quá đỉnh của ngăn xếp cao nhất) thì nó sẽ tràn.
- Khi nó tiếp tục xuất hiện và vượt quá đáy ngăn xếp, nó sẽ tràn.
- Tràn ngăn xếp sẽ khiến hệ thống gặp sự cố.
3. Cấu trúc bên trong 8086/8088CPU
Phần 2.3 giải thích ý tưởng hoạt động của bộ xử lý hoặc ý tưởng "tìm nạp và thực thi" của máy tính. Phần sau đây giới thiệu cấu trúc bên trong của 8086CPU (vẫn nhất quán với ý tưởng chung ở Phần 2.3).
3.1 BIU
-
Có một vấn đề, bus địa chỉ là 20 bit, có nghĩa là không gian địa chỉ 1MB có thể được giải quyết và các thanh ghi bên trong CPU chỉ có 16 bit.
Làm cách nào để sử dụng thanh ghi 16 bit để lưu trữ thông tin địa chỉ 20 bit?
-
Thiết kế của 8086 là: bộ nhớ được chia thành các phân đoạn logic, một thanh ghi chịu trách nhiệm đánh địa chỉ phân đoạn và một thanh ghi chịu trách nhiệm đánh địa chỉ không gian trong phân đoạn, nghĩa là lên tới 64KB (\(2^{16} \) byte) khoảng trống trong một phân đoạn.
-
Các thanh ghi địa chỉ cơ sở phân đoạn và thanh ghi lệnh khác nhau nằm ở góc trên bên phải của BIU trong hình trên.
-
Quá trình chuyển đổi cụ thể ở đây được thực hiện bởi bộ tạo địa chỉ và điều khiển bus trong hình trên.
-
Công thức chuyển đổi là:
CS:IP (CS dịch chuyển sang trái 4 bit + IP).
(CS << 4) + IP 。
-
Hàng đợi lệnh ở góc dưới bên phải của BIU đóng vai trò là thanh ghi lệnh IR trong Phần 2.3. Nó có 6 byte trong 8086 và 4 byte trong 8088.
Đây là điểm khác biệt duy nhất trong cấu trúc bên trong của hai CPU.
Tóm lại, BIU chịu trách nhiệm tìm nạp các hướng dẫn và dữ liệu từ bộ nhớ ngoài và đặt các hướng dẫn đã tìm nạp vào hàng đợi lệnh, tương ứng với "tìm nạp hướng dẫn". Dữ liệu được gửi trực tiếp đến EU thông qua bus ALU.
3.2 Liên minh Châu Âu
Bản tóm tắt được đặt ở phía trước: nó chịu trách nhiệm lấy các hướng dẫn từ hàng đợi lệnh, giải mã và thực thi các hướng dẫn, tương ứng với "thực thi".
Ở đây có thể thấy rằng sự tồn tại của hàng đợi lệnh có thể cải thiện hiệu suất của cả hai phần.
Bus bên ngoài luôn bận trong quá trình hiển thị ở trên và mức sử dụng bus cũng tăng lên.
4. Đăng ký tổ chức 8086
Có 14 thanh ghi 16 bit bên trong 8086
5. Bộ nhớ 8086 và không gian địa chỉ tổ chức IO
5.1 Không gian địa chỉ
-
Các dòng địa chỉ: A19-A16, A15-A10, A9-A0.
-
8086 đánh địa chỉ bộ nhớ bằng 20 dòng địa chỉ và dòng địa chỉ IO16 (A0~A15).
-
Trong các PC IBM đời đầu, các dòng địa chỉ A9-A0 được phân bổ cho IO để giải quyết không gian 1KB.
- 512B đầu tiên: gán địa chỉ cho IO trên bo mạch chủ (000H-1FFH)
- Sau 512B: Gán địa chỉ cho IO trên bo mạch plug-in (200H-3FFH)
5.2 Định dạng lưu trữ dữ liệu
-
Ba định dạng: byte, phông chữ, phông chữ kép.
-
Dữ liệu byte:
Dữ liệu loại một byte tương ứng với một đơn vị địa chỉ.
Trong thiết kế hợp ngữ, dữ liệu byte được xác định trong phân đoạn DS trong bộ nhớ, được xác định cụ thể bằng lệnh giả DB.
Các chỉ thị được trình biên dịch mã sử dụng để diễn giải mã biên dịch.
-
Dữ liệu phông chữ:
Tương ứng với hai đơn vị địa chỉ liền kề.
Xác định lệnh giả là DW. Ví dụ: đặt dữ liệu phông chữ 5678H vào vị trí bộ nhớ 0003H và 0004H, sau đó 78H sẽ được đặt ở địa chỉ thấp của từ 0003H và 56 sẽ được đặt ở địa chỉ cao 0004H của từ. từ.
Có một câu hỏi về sự liên kết và sai lệch ở đây. Nếu địa chỉ dữ liệu từ là địa chỉ lẻ thì gọi là lệch, còn địa chỉ chẵn là thẳng hàng (ví dụ ví dụ trên là lệch).
Hướng dẫn truy cập bộ nhớ để căn chỉnh dữ liệu mất ít thời gian hơn. Việc điều chỉnh sai sẽ mất thêm một khoảng thời gian liên quan đến cơ chế truyền của bus dữ liệu.
Để tránh bị quên, đây là một mẹo: Trong trường hợp căn chỉnh, byte cao tương ứng với địa chỉ cao, đơn vị địa chỉ là số lẻ và dòng dữ liệu 8 bit cao (một là một dòng, khác là một byte).
-
Dữ liệu từ kép:
Tương ứng với hai từ, tức là 4 đơn vị lưu trữ.
Xác định lệnh là DD.
Khi sử dụng [BX /BP/ SI/ DI] trong hợp ngữ, nó đề cập đến nội dung được lưu trong thanh ghi, là địa chỉ; khi sử dụng BX BP SI/ DI - nó đề cập đến chính thanh ghi đó.
5.3 Phân đoạn bộ nhớ và hình thành địa chỉ vật lý
-
Tại sao phân đoạn.
- Như đã đề cập trước đó: thanh ghi có 16 bit và các dòng địa chỉ có 20.
-
Cách phân đoạn:
-
Kích thước tối đa của phân đoạn logic là 64K và địa chỉ bắt đầu của mỗi phân đoạn logic phải chia hết cho 16.
Do đó, về mặt lý thuyết, không gian địa chỉ 1 MB có thể được chia thành các đoạn logic 64K ( \(2^{16}\) ), có thể được mô tả bằng các thanh ghi 16 bit.
-
địa chỉ vật lý.
-
Như đã đề cập trong Phần 3.1 ở trên, địa chỉ vật lý thực cần được lấy lại từ địa chỉ cơ sở của phân đoạn (địa chỉ bắt đầu của phân đoạn) + phần bù phân đoạn.
-
Tính duy nhất của địa chỉ vật lý:
Vì các phân đoạn chồng lên nhau (chia hết cho 16) nên địa chỉ logic của một đơn vị chỉ có thể khác nhau. Nhưng địa chỉ vật lý phải khác nhau. Địa chỉ vật lý là số nhà được gán cho từng đơn vị trên toàn cầu trong bộ nhớ.
Mặc dù về mặt lý thuyết, các phân đoạn (chia cho 16) sẽ chồng lên nhau, nhưng trên thực tế, chương trình nguồn hợp ngữ có các phân đoạn được xác định riêng và hệ điều hành sẽ tải chúng vào bộ nhớ riêng biệt nên việc ghi đè phân đoạn sẽ không xảy ra.
-
Lập trình và gỡ lỗi đều là các địa chỉ logic.
-
Sự hình thành địa chỉ vật lý (PA).
Đó chính là công thức chuyển đổi ở Mục 3.1 trên.
Địa chỉ vật lý = địa chỉ cơ sở phân đoạn
-
Nhận hướng dẫn.
-
CPU thực hiện các lệnh tìm nạp như thế nào?
-
CS:IP 。
Nghĩa là, CS (địa chỉ cơ sở phân đoạn) X16 + IP (địa chỉ bù đắp trong phân đoạn), lấy địa chỉ vật lý nơi lưu trữ lệnh.
Sau đó 8086 đi vào bộ nhớ để tìm lệnh và lấy lệnh theo địa chỉ vật lý đã tính toán.
Ở đây trong khóa học (21 phút trong Bài giảng 11), việc nhảy vô điều kiện được đề cập đến. Giáo viên đang nói về việc nhảy vô điều kiện giữa các đoạn mã.
Theo tôi được biết thì phần này tương đối phức tạp, chắc thầy muốn nhấn mạnh đặc điểm lấy bộ nhớ của cs:ip nên tôi sẽ đề cập chi tiết sau.
Đặc điểm: Người dùng không thể ghi CS và IP. CS được khởi tạo sau khi hệ điều hành đưa mã từ đĩa vào bộ nhớ. IP không thể ghi nhưng sẽ tự động tăng.
-
Để giải thích rõ hơn về sự hình thành địa chỉ vật lý, hãy lấy một ví dụ khác là thao tác ghi bộ nhớ
mov [bx], rìu
Đây là để ghi giá trị trong ax vào ds:bx. Nếu bạn muốn nói về kiến thức về EU BIU trong Phần 3, thì trước tiên EU truyền địa chỉ 16-bit BX đến BIU dọc theo bus dữ liệu nội bộ và BIU. dừng tìm nạp hướng dẫn Vận hành, hợp tác với EU để ghi hoạt động bộ nhớ, BIU đặt BX vào bộ cộng để tạo địa chỉ vật lý, xuất địa chỉ vật lý 20 bit và đặt nó trên dòng địa chỉ và đặt giá trị AX trên dòng dữ liệu. .
Nếu căn chỉnh, một khoảng thời gian sẽ được hoàn thành; nếu không căn chỉnh, hai khoảng thời gian sẽ được hoàn thành.
-
Hoạt động ngăn xếp (SS:SP) tương tự như quy trình trên.
5.4 Đánh địa chỉ các lệnh khác nhau
Phần này không thể tách rời khỏi chế độ đánh địa chỉ trong hệ thống hướng dẫn, sẽ được trình bày ở phần tiếp theo.
Về tính linh hoạt của việc chỉ định và không chỉ định các thanh ghi bù phân đoạn logic khác nhau, sau đây là một bản tóm tắt nhỏ:
Bảng này tóm tắt các thanh ghi mặc định trong hoạt động và các thanh ghi có thể được thay thế. Ví dụ: lệnh CS phải khớp với IP và bạn không được tự mình chỉ định địa chỉ thanh ghi hoặc địa chỉ phân đoạn.
Cuối cùng, bài viết này về Nguyên tắc máy vi tính và ghi chú thiết kế hệ thống 2|Cấu trúc và chức năng của 8086CPU kết thúc ở đây. Nếu bạn muốn biết thêm về Nguyên tắc máy vi tính và ghi chú thiết kế hệ thống 2|Cấu trúc và chức năng của 8086CPU, vui lòng tìm kiếm các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!