1 MỤC LỤC Chương1 3 Kiến trúc máy vi tính PC và đơn vị xử lý trung tâm 3 1 1 Các thành phần cơ bản của máy tính số 3 1 2 Biểu diễn thông tin trong máy tính số 5 1 3 Kiến trúc cơ bản máy vi tính PC 14 1 4 Đơn vị xử lý trung tâm CPU (Central Processing Unit) 18 1 4 1 Cấu hình bên ngoài 18 1 4 2 Cấu hình bên trong 20 1 4 3 Quản lý bộ nhớ trong chế độ thực và các thanh ghi đoạn 21 1 4 4 Các thanh ghi 23 1 4 5 Quản lý bộ nhớ trong chế độ bảo vệ 26 1 4 6 Cơ chế đa nhiệm 34 1 4 7 Các chế độ xác định đị.
Các thành phần cơ bản của máy tính số
Trong lịch sử phát triển, máy tính điện tử được chia thành hai hướng kỹ thuật chính, dẫn đến sự ra đời của hai loại máy tính: máy tính tương tự (analog computer) và máy tính số (digital computer) Máy tính tương tự xử lý dữ liệu liên tục thông qua các mạch điện tử tương tự, trong khi máy tính số làm việc với dữ liệu rời rạc và sử dụng mạch điện tử số Hiện nay, máy tính số chiếm ưu thế vượt trội, do đó khi nhắc đến máy tính, người ta thường ám chỉ đến máy tính số.
Máy tính số gồm các thành phần cơ bản như sau:
Đơn vị xử lý trung tâm (CPU) là một mạch vi điện tử có độ tích hợp cao, có nhiệm vụ đọc mã lệnh dưới dạng các bit thông tin 0 hoặc 1 từ bộ nhớ chính và giải mã chúng thành chuỗi xung điều khiển để thực hiện các thao tác Bên trong vi xử lý, các thanh ghi (registers) như thanh ghi con trỏ lệnh IP (Instruction Pointer) và bộ đếm chương trình PC (Program Counter) lưu trữ địa chỉ lệnh kế tiếp, trong khi các thanh ghi khác lưu trữ dữ liệu tạm thời và trạng thái hệ thống Các thanh ghi kết hợp với bộ tính số học và logic ALU (Arithmetical and Logic Unit) cho phép thực hiện các thao tác với dữ liệu Đơn vị điều khiển CU (Control Unit) trong vi xử lý là phần phức tạp nhất, chịu trách nhiệm giải mã lệnh và tạo xung điều khiển cho toàn hệ thống CPU thực hiện các chức năng chính như vậy.
- Điều khiển ghi/đọc thông tin lên bộ nhớ
-Hiểu và thực hiện 1 tập hữu hạn các chỉ thị được thể hiện dưới dạng mã số
-Nhập tuần tự các chỉ thị từ bộ nhớ và thực thi các chỉ thị này (chức năng thực hiện chương trình đang có trong bộ nhớ)
-Điều khiển quá trình nhập thông tin từ thiết bị đầu vào và điều khiển quá trình xuất thông tin qua thiết bị đầu ra
Bộ nhớ chính, bao gồm RAM và ROM, được cấu tạo từ các vi mạch nhớ bán dẫn với tốc độ truy cập nhanh nhưng dung lượng hạn chế Nó nằm trên bản mạch chính và được chia thành các ô nhớ, mỗi ô có một địa chỉ duy nhất xác định Địa chỉ của các ô nhớ bắt đầu từ 0 và tăng dần, với mỗi ô nhớ có kích thước 1 byte.
ROM : ROM là bộ nhớ chỉ đọc Dữ liệu trong ROM được duy trì ngay cả khi không có
ROM là nguồn điện nuôi quan trọng, chứa các chương trình kiểm tra hệ thống, thiết lập cấu hình, đọc đĩa khởi động và điều khiển các thiết bị vào-ra cơ bản của máy tính, được biết đến với tên gọi BIOS (Basic Input/Output System).
RAM, hay còn gọi là bộ nhớ thao tác, là nơi lưu trữ các phần mềm hệ thống như hệ điều hành cùng với dữ liệu và phần mềm của các chương trình đang hoạt động Lưu ý rằng nội dung trong RAM sẽ bị xóa sạch khi mất điện.
Bộ nhớ khối, hay còn gọi là bộ nhớ ngoài, là nơi lưu trữ tài nguyên phần mềm của máy tính, bao gồm hệ điều hành, các chương trình và dữ liệu Nó được kết nối với hệ thống thông qua các thiết bị vào/ra, mang lại dung lượng lớn nhưng có tốc độ truy cập chậm Một số loại bộ nhớ ngoài phổ biến bao gồm đĩa cứng và đĩa mềm.
Bộ nhớ cache là một loại bộ nhớ tốc độ cao, hoạt động như một bộ đệm giữa CPU và bộ nhớ chính, giúp tăng tốc độ truy cập dữ liệu cho CPU Mặc dù có dung lượng nhỏ hơn bộ nhớ chính, bộ nhớ cache lưu trữ các lệnh và dữ liệu thường xuyên được sử dụng trong quá trình thực hiện chương trình, từ đó cải thiện hiệu suất hoạt động của hệ thống.
-Thiết bị vào: Thực hiện chức năng nhập thông tin cho máy tính
Ví dụ: Bàn phím, chuột,…
-Thiết bị ra: Hiển thị các thông tin đưa ra từ máy tính ở dạng con người có thể hiểu được
VD: Màn hình, máy in, thiết bị âm thanh,…
- Phối ghép vào/ra (thiết bị giao diện): là các mạch điện tử thực hiện chức năng ghép nối, cho phép
CPU giao tiếp với các thiết bị ngoại vi như bàn phím, màn hình, ổ đĩa từ và chuột thông qua các cổng vào/ra (I/O port) Các cổng này có thể hoạt động như cổng vào, cho phép CPU nhận thông tin từ bên ngoài, hoặc cổng ra, cho phép CPU xuất thông tin ra ngoài, hoặc cả hai tùy thuộc vào yêu cầu sử dụng.
Sự cần thiết của thiết bị giao diện xuất phát từ sự khác biệt lớn về cách thức truyền tải và tốc độ xử lý thông tin giữa đơn vị xử lý trung tâm và các thiết bị ngoại vi Trong khi máy tính sử dụng số để truyền tải thông tin, thế giới bên ngoài lại sử dụng các dạng như ký tự, ánh sáng và âm thanh Đơn vị xử lý trung tâm có khả năng xử lý thông tin với tốc độ rất cao, trong khi các thiết bị ngoại vi thường hoạt động với tốc độ chậm hơn nhiều.
Các khối cơ bản của máy tính được kết nối qua bus hệ thống, là đường truyền thông tin chính trong máy tính Về mặt vật lý, bus bao gồm các đường dây truyền tín hiệu điện, mỗi đường dây truyền tải một bit thông tin tại một thời điểm Đơn vị xử lý trung tâm (CPU) kết nối và trao đổi thông tin với các đơn vị chức năng khác thông qua hệ thống bus Bus hệ thống bao gồm ba thành phần chính.
+ Bus dữ liệu (2 chiều): để truyền tải dữ liệu
+ Bus địa chỉ (1 chiều: chiều ra từ CPU) để CPU định vị, chọn ô nhớ hoặc chọn thiết bị ngoại vi cần liên lạc, là loại bus 1 chiều
Bus điều khiển hai chiều được phát ra bởi CPU hoặc thiết bị khác để quản lý quá trình trao đổi dữ liệu, giúp phân biệt giữa bộ nhớ và thiết bị vào/ra, cũng như xác định thao tác truy nhập là đọc hay viết Để người dùng có thể thực hiện các tác vụ trên máy tính, như chạy các chương trình ứng dụng, cần có hệ điều hành (HĐH) được cài đặt HĐH là tập hợp các chương trình cho phép sử dụng các chức năng cơ bản của phần cứng và phần mềm trong hệ thống máy tính Khác với chương trình ứng dụng, HĐH hoạt động liên tục trong suốt thời gian máy tính hoạt động, điều khiển các chương trình chạy và quản lý tài nguyên như bộ nhớ và thiết bị vào/ra.
Máy tính số được ứng dụng rộng rãi trong các lĩnh vực khoa học và đời sống, bao gồm xử lý dữ liệu, đo lường, điều khiển tự động và hoạt động như một bộ xử lý số hiệu quả.
Biểu diễn thông tin trong máy tính số
1 Các hệ đếm liên quan tới máy tính
Trong cuộc sống hàng ngày, chúng ta thường sử dụng hệ đếm thập phân với các chữ số từ 0 đến 9 để biểu diễn giá trị số Tuy nhiên, máy tính sử dụng hệ đếm nhị phân để biểu diễn giá trị số, do cấu trúc của chúng dựa trên các mạch điện chỉ có hai trạng thái: đóng hoặc mở, có hoặc không có dòng điện Trong hệ nhị phân, bit (0 hoặc 1) là đơn vị nhỏ nhất, đại diện cho dữ liệu và thông tin trong máy tính.
- Để biểu giá trị của một số N bất kỳ ta dùng ký pháp vị trí như sau: anan-1….a1a0a-1a-2…a-(m-1)a-m=an*b n +an-1*b n-1 +…+a1*b 1 +a0*b 0 +a-1*b -1 +a-2*b -2 +…+a-(m-1)*b -
Trong đó: b : là cơ số ; b n-1 ,…,b 2 ,b 1 ,b 0 ,b -1 ,b -2 ,…,b -(m-1) ,b -m là các trọng số a n , a n-1 ,a n-2 ,…,a 1 ,a 0 ,a -1 ,a -2 ,…a -(m-1) ,a -m : là các số nằm ở vị trí tương ứng với trọng số
Để phân biệt các hệ đếm, chúng ta thường thêm chỉ số dưới ký hiệu cơ số vào các số Chẳng hạn, số 65 trong hệ thập phân được ghi là 6510, trong khi trong hệ nhị phân, nó được viết là 1001022.
5, 2, 1, 4, 5 – là các chữ số được đặt ở vị trí tương ứng với trọng số
- Một giá trị 126.5 hệ thập phân sẽ được biểu diễn ở hệ nhị phân dưới dạng : 1111110.12=1*2 6 +1*2 5 +1*2 4 +1*2 3 +1*2 2 +1*2 1 +0*2 0 +1*2 -1
1, 0, 1, 1, 1,1,1,1 – là các chữ số được đặt ở vị trí tương ứng với trọng số
- Hiện nay có 4 hệ đếm hay được dùng trong những bài toán liên quan đến máy tính đó là :
Giữa các hệ đếm thường xuyên phải có sự chuyển đổi qua lại :
Để chuyển đổi số thập phân sang hệ cơ số r, ta cần tách số thành phần nguyên và phần phân số để xử lý riêng biệt Phần nguyên được chuyển đổi bằng cách chia liên tiếp cho r và ghi nhận các số dư Đối với phần phân số, ta nhân liên tiếp với r và ghi lại các số nguyên thu được Ví dụ, để chuyển đổi số 23.375 từ hệ thập phân sang nhị phân, ta sẽ áp dụng phương pháp số dư cho phần nguyên.
Trong quá trình chuyển đổi phần lẻ của một số thập phân sang hệ nhị phân bằng phương pháp nhân, có một số trường hợp dẫn đến việc chuyển đổi số lặp lại vô hạn.
+ Đổi số nhị phân sang số thập phân: Bằng cách cộng các số mũ 2 ứng với các số bằng 1 trong số nhị phân
Chuyển đổi giữa số nhị phân và số hệ thập lục có thể thực hiện dễ dàng bằng cách nhóm các số nhị phân thành các nhóm 4 bit Mỗi nhóm 4 bit sẽ tương ứng với một chữ số trong hệ mười sáu, giúp quá trình chuyển đổi trở nên hiệu quả và chính xác.
+ Chuyển đổi một số hệ thập lục phân sang số nhị phân chỉ việc đổi mỗi chữ số hệ thập lục sang một nhóm 4bit
Hệ BCD (binary coded decimal) là một hệ thống mã hóa số, trong đó mỗi chữ số thập phân được biểu diễn bằng một chuỗi nhị phân Hệ này sử dụng 4 bit để mã hóa các chữ số từ 0 đến 9, tuy nhiên không tận dụng hết tất cả các tổ hợp có thể có của 4 bit.
Ví dụ: Số 52010 nếu biểu diễn theo số BCD sẽ là:
Các số BCD 0101BCD 0010BCD 0000BCD
2 Các phép toán đối với các số nhị phân
- Phép cộng : Ta có nguyên tắc sau
Trong hệ nhị phân, phép cộng 1 + 1 sẽ cho kết quả là 0 và nhớ 1, tương tự như cách cộng trong số thập phân Mặc dù giá trị 1 + 1 trong hệ thập phân là 2, nhưng trong hệ nhị phân chỉ có hai ký hiệu là 0 và 1, do đó, kết quả phải được điều chỉnh.
8 biểu diễn của 2 trong hệ nhị phân là 2 = 1*2 1 + 0*2 0 = 10 nên kết quả chính là 0 và nhớ 1
Ví dụ: Cộng hai số 1000111 (số 71 trong hệ thập phân) và số 11110 (số 30 trong hệ thập phân)
Và kết quả chúng ta được: 1000111 + 11110 = 1100101 (71 + 30 = 101, ta có thể kiếm tra lại bằng cách đổi số 101 sang nhị phân xem có đúng kết quả vừa làm ra không)
0 – 1 = 1 mượn 1 (vì số bị trừ nhỏ hơn số trừ nên phải mượn 1từ số ở vị trí cao hơn bên trái)
Ví dụ: Thực hiện phép trừ 51 – 28 = 23
Nhân hai số nhị phân thực hiện tương tự như phép nhân trong hệ thập phân, trong đó hai số A và B được nhân với nhau thông qua các tích số của các ký số.
Để thực hiện phép nhân giữa hai số nhị phân A và B, ta lấy từng con số trong B và nhân nó với từng con số trong A, sau đó ghi kết quả xuống một hàng mới Mỗi hàng mới sẽ được dịch sang trái 1 bit so với hàng trước đó Cuối cùng, tổng của các tích cục bộ này sẽ cho ra kết quả tích số cuối cùng.
9 Để dễ hiểu, xem 2 hình dười đây, hình thứ nhất biểu diễn cách nhân 2 số thập phân và hình thứ 2 là cách nhân 2 số nhị phân
Chia số nhị phân là một quá trình phức tạp hơn so với các phép toán cộng, trừ và nhân Phương pháp chia số nhị phân tương tự như chia hai số thập phân, vì vậy bạn cần nắm vững cách chia và trừ trong hệ thập phân Để hiểu rõ hơn, hãy tham khảo hình 1 để ôn lại cách chia số thập phân, sau đó xem hình 2 để tìm hiểu cách chia số nhị phân.
3 Biểu diễn số nguyên không dấu và có dấu trong máy tính
3.1 Biểu diễn số nguyên không dấu
Tất cả các số và mã trong máy vi tính được biểu diễn bằng hệ nhị phân Để đại diện cho các số nguyên không dấu, người ta sử dụng n bit, và độ dài của số bit này xác định các khoảng giá trị cụ thể.
Số bit Khoảng giá trị n bit: 0 2 n - 1
3.2 Biểu diễn số nguyên có dấu trong máy tính
Các số nguyên có dấu sử dụng bit ở vị trí bên trái nhất để biểu thị dấu của số Cụ thể, nếu bit này bằng 0, số đó mang dấu dương (+), còn nếu bằng 1, số đó mang dấu âm (-).
Số bit Khoảng giá trị n bit: -(2 n ) +(2 n -1)
Một số nguyên dương trong khoảng này sẽ được biểu diễn như mã nhị phân thông thường có số 0 ở bit cao nhất
Một số nguyên âm trong khoảng này sẽ được biểu diễn theo mã số bù 2 của số nguyên dương tương ứng
Số bù 2 của một số nhị phân được tạo ra bằng cách đổi 0 thành 1, 1 thành 0 và cộng 1 vào chữ số có ý nghĩa thấp nhất của số vừa được tạo ra Phương pháp này giúp chuyển đổi số nhị phân thành số bù 2 một cách hiệu quả.
Ví dụ : Số bù 2 của -25
Hệ thống bù 2 cho phép thực hiện các phép tính cộng và trừ hai số nhị phân chỉ qua một phép tính cộng duy nhất Khi thực hiện phép cộng trong hệ thống bù 2, có thể xảy ra bốn tình huống khác nhau.
+ Cả 2 số là dương : Khi thực hiện phép cộng thì cộng từng số từ phải qua trái, kể cả bit dấu Ví dụ cộng hai số dương 4 bit :
Một số là dương, trong khi một số khác là âm, với trị tuyệt đối của số âm nhỏ hơn Để tạo số âm, ta sử dụng phương pháp bù 2 và thêm bit dấu vào vị trí cao nhất.
Khi thực hiện phép cộng, một bit nhớ sẽ được tạo ra từ bit dấu Cần bỏ bit nhớ đi Kết quả là một số dương
Ví dụ cộng hai số khác dấu 4 bit :
+ Một số là dương, một số là âm và số âm có trị tuyệt đối lớn hơn
Kiến trúc cơ bản máy vi tính PC
Một máy tính PC được xây dựng trên cơ sở các khối chức năng cơ bản sau:
1 Đơn vị xử lý trung tâm CPU 80286
CPU 80286 là loại 16 bít (độ rộng của dữ liệu hoặc mã lệnh là 16 bit) Chức năng chính của CPU:
CPU 80286 có Bus địa chỉ 24bit và quản lý được 2 4 *2 20 = 16M ô nhớ vật lý
+ Hiểu và xử lý một tập hữu hạn các lệnh
- Chuyển dữ liệu giữa CPU và bộ nhớ (MOV, PúH, POP v.v.)
- Số học và logic (ADD, SUB, MUL, DIV v.v )
- Xử lý bit (SHL.SHR.ROL.Rỏ v.v )
- Rẽ nhánh (JMP CALL, RET INT v.v )
- Vào/ra dữ liệu các cổng (IN, OUT)
- Các lệnh khác (CLI STI v.v )
+ Thực hiện chương trình theo cơ chế nhập tuần tự từng lệnh từ bộ nhớ và xử lý
+ Điều khiển hoạt động trao đổi dữ liệu giữa CPU và bộ nhớ, giữa CPU với thiết bị vào/ra và với các thiết bị khác
CPU 80286 có hai chế độ làm việc
Chế độ thực là chế độ hoạt động của CPU 8086, được kích hoạt khi nguồn điện được bật Trong chế độ này, CPU có khả năng quản lý bộ nhớ vật lý lên tới 1MB, với khả năng mở rộng tối đa đến 16MB.
Chế độ bảo vệ cung cấp cơ chế bảo vệ bộ nhớ và hỗ trợ quản lý bộ nhớ ảo, cho phép CPU quản lý tới 1G ô nhớ (2^30) Tất cả các CPU từ 80286 trở đi đều có khả năng hoạt động trong chế độ này.
Bộ đồng xử lý hỗ trợ CPU trong việc thực hiện các phép toán số học với số thực dấu chấm động, bao gồm các phép tính logarit và lượng giác, giúp tăng tốc độ xử lý và nâng cao độ chính xác.
Bộ nhớ chính là bộ nhớ có tốc độ truy nhập cao, thường được tổ chức theo kiểu tuyến tính với địa chỉ của các ô nhớ bắt đầu từ 0 và tăng dần Bộ nhớ chính chứa mã lệnh chương trình và dữ liệu của chương trình đang chạy hiện thời, và CPU sẽ phát địa chỉ lên Bus địa chỉ để truy nhập bộ nhớ chính Bộ nhớ chính bao gồm hai phần chính là ROM và RAM, mỗi phần có chức năng và đặc điểm riêng biệt.
ROM, hay bộ nhớ chỉ đọc, là loại bộ nhớ mà dữ liệu vẫn được duy trì ngay cả khi không có nguồn điện ROM chứa các phần mềm cơ bản cần thiết cho hoạt động của hệ thống.
Các chương trình kiểm tra hệ thống, hay còn gọi là quá trình POST, thực hiện việc kiểm tra các thành phần quan trọng của máy tính như CPU, RAM, các thiết bị điều khiển và giao diện, cũng như các thiết bị ngoại vi như bàn phím và ổ đĩa.
- Chương trình xác lập cấu hình hệ thống
- Chương trình quét ROM mở rộng (Tại các địa chỉ C000 : 0000, D000:
000 Nếu tìm thấy bất kỳ ROM nào có chương trình thì nó sẽ được thực thi)
Chương trình khởi động của ổ đĩa mặc định thường được xác định bởi BIOS, cho phép người dùng chọn ổ đĩa khởi động Khi khởi động từ đĩa mềm, BIOS sẽ đọc cung khởi động (Boot Record), trong khi khi khởi động từ ổ cứng, cung khởi động chủ (Master Boot Record - MBR) của ổ đĩa cứng đầu tiên sẽ được nạp vào RAM tại địa chỉ cụ thể.
0000 : 7C00 CPU chạy chương trình khởi động hệ điều hành tại địa chỉ này
ROM chứa chương trình BIOS (Basic Input/Output System), là cầu nối giữa phần cứng và phần mềm trong hệ thống máy tính BIOS điều khiển các thiết bị vào-ra cơ bản và gắn liền với cấu hình phần cứng của máy tính, giúp hệ điều hành giao tiếp hiệu quả với phần cứng của từng thiết bị.
RAM, hay còn gọi là bộ nhớ thao tác, có vai trò quan trọng trong việc lưu trữ hệ điều hành, phần mềm và dữ liệu của các chương trình đang hoạt động Bộ nhớ RAM giúp tăng cường hiệu suất của hệ thống bằng cách cho phép truy cập nhanh chóng đến các ứng dụng và thông tin cần thiết.
Phân bổ địa chỉ của các vùng chức năng tại vùng nhớ đầu tiên như sau:
(hexadecimal) Địa chỉ đoạn (hexadecimal)
Tên và chức năng vùng nhớ
Vùng nhớ quy ước cho hệ điều hành và người sử dụng có dung lượng 640Kb, trong khi vùng nhớ dành cho hiển thị (VIDEO RAM) là 128Kb Ngoài ra, còn có 128Kb vùng nhớ dự phòng cho ROM, giúp mở rộng khả năng lưu trữ.
(C000,C800,D000,D800) 0E0000-0EFFFF E000 Vùng nhớ 64kb dự phòng cho RAM hệ thống
0F0000-0FFFFF F000 Vùng nhớ 64Kb ROM hệ thống
100000-FFFFFF Vùng nhớ mở rộng 15Mb
Thiết bị CMOS bao gồm hai phần chính: đồng hồ thời gian thực và RAM-CMOS, cả hai được cấp nguồn bằng điện độc lập Đồng hồ thời gian thực cung cấp thông tin thời gian hiện tại như năm, tháng, ngày, giờ, phút và giây, được lưu trữ trong 10 byte đầu tiên của RAM-CMOS Phần còn lại của RAM-CMOS chứa thông tin cấu hình hệ thống, bao gồm kích thước RAM và thông tin về ổ đĩa từ Truy cập vào RAM-CMOS được thực hiện qua các cổng có địa chỉ 070h và 071h.
TIMER 8254 gồm có 3 bộ đếm nhị phân 16 bít Đây là các bộ đếm khả trình Các bộ đếm
16 bít trong TIMER 8254 nhận xung nhịp tần số 1190MHz từ mạch tạo xung chuẩn TIMER
8254 tạo ra xung nhịp cho đồng hồ hệ thống, xung nhịp làm tươi DRAM và xung âm thanh cho loa:
Bộ đếm # 0: tạo xung nhịp chu kỳ 55ms (18.2 xung/ls) cho đồng hồ hệ thống
Bộ đếm #1: tạo xung nhịp kích hoạt hệ thống làm tươi DRAM
Bộ đếm #2: Cho phép người sử dụng lập trình tạo xung âm thanh cho loa
6 Bộ điều khiển ngắt PIC8259 (Programmable Interrupt Controller)
PIC 8259 là một thiết bị điều khiển khả trình, giúp CPU thực hiện cơ chế ngắt và phản ứng nhanh chóng với yêu cầu từ các thiết bị vào-ra dữ liệu Trong máy vi tính dòng AT, có hai thiết bị PIC 8259, mỗi thiết bị có khả năng ghi nhận 8 yêu cầu ngắt.
7 Bộ điều khiển truy nhập trực tiếp bộ nhớ DMAC 8237 (Direct Memory Access Controller)
DMAC 8237 là một thiết bị điều khiển khả trình, có chức năng điều khiển quá trình truyền dữ liệu trực tiếp giữa bộ nhớ và các thiết bị ngoại vi, được gọi là DMA (Direct Memory Access) Trong các máy vi tính dòng AT, có hai thiết bị DMAC 8237, mỗi thiết bị phục vụ cho 4 kênh DMA, giúp tối ưu hóa quá trình xử lý dữ liệu.
8 Thiết bị giao diện bàn phím KC 8042 (Keyboard Controller)
KC 8042 thực hiện chức năng giao diện giữa bàn phím và đơn vị xử lý trung tâm CPU
KC 8042 thực hiện giao diện kiểu nối tiếp đồng bộ giữa CPU và bàn phím, phát các chỉ thị và nhận mã phím từ bàn phím
9 Thiết bị giao diện màn hình CRTC (Cathode Ray Tube Controller)
CRTC, hay Bộ điều khiển đồng bộ hình ảnh, là một thiết bị khả trình đóng vai trò quan trọng trong việc kết nối CPU với màn hình hiển thị Thiết bị này nhận lệnh và dữ liệu từ CPU, từ đó tạo ra tín hiệu hình ảnh và các tín hiệu đồng bộ để điều khiển hiển thị CRTC có khả năng hoạt động ở hai chế độ chính: văn bản và đồ họa màu.
10 Thiết bị giao diện nối tiếp UART 8250 (Universal Asynchronous Receiver Transmitter)
UART 8250 là một giao diện nối tiếp không đồng bộ giữa CPU và các thiết bị ngoại vi theo chuẩn RS232 Nó có khả năng nhận và phát dữ liệu dạng nối tiếp, đồng thời tạo và nhận các tín hiệu bắt tay với các thiết bị bên ngoài Trong máy vi tính dòng AT, thường có hai thiết bị UART 8250.
11 Thiết bị giao diện song song PPI (Programmable Peripheral Interface)
Đơn vị xử lý trung tâm CPU (Central Processing Unit)
Cấu hình bên ngoài
Đơn vị xử lý trung tâm 80286 của máy vi tính PC/AT có các chân tín hiệu như hình sau:
- CLK: tín hiệu xung tạo nhịp thời gian cơ sở cho đơn vị xử lý trung tâm
- RST: tín hiệu khởi động hệ thống (đưa mạch logic bên trong CPU về trạng thái ban đầu)
Nếu RST=1 trong ít nhất 16 nhịp đồng hồ thì vi xử lý sẽ bỏ chương trình đang chạy và nhảy vào trạng
19 thái khởi động lại ngay sau khi chuyển xuống mức 0
BUS A23-A0 bao gồm 24 tín hiệu địa chỉ và 3 tín hiệu trạng thái, có chức năng xác định địa chỉ bộ nhớ và các thiết bị vào-ra Kích thước tối đa của bộ nhớ vật lý mà nó hỗ trợ lên tới 16MB (2^24) Khi CPU tương tác với các cổng vào-ra, các chân A23-A16 sẽ ở mức 0, trong khi các dây A15-A0 được sử dụng để xác định địa chỉ cho 64KB cổng vào-ra.
- D15-D0: BUS dữ liệu 16 bít, hai chiều, 3 trạng thái
- Vcc: Nguồn nuôi +5V cho vi xử lý
Các tín hệu điều khiển
- INT: tín hiệu yêu cầu ngắt cứng Yêu cầu ngắt có thể bị che khi bit cờ IF trong thanh ghi FLAGS được đặt xuống 0
- NMI: yêu cầu ngắt không che được bằng cờ IF
Ngắt này không bị che bởi cờ ngắt Ngắt này sẽ được thực hiện ngay sau khi kết thúc lệnh hiện tại
- HOLD: yêu cầu CPU "thả nổi" hệ thống BUS
Khi có thiết bị nào đó muốn làm chủ (quản lý hệ thống bus như DMAC 8237) nó sẽ gửi tín hiệu HOLD cho CPU
HLDA (Hold Acknowledge) trả lời với tín hiệu "HOLD" Khi HLDA ở trạng thái tích cực, các đầu tín hiệu như Ao-A23, Do-D15 và một số đầu tín hiệu điều khiển khác sẽ có trở kháng cao, đồng thời CPU sẽ được cách ly khỏi môi trường bên ngoài Nếu đồng ý, tín hiệu HLDA sẽ được thiết lập ở mức 1.
- -LOCK: cấm cỏc àP khỏc làm chủ BUS
- PEREQ, -PEACK, -BUSY, -ERROR: Các tín hiệu này được dùng để ghép nối 80286 với các phần tử mở rộng của vi xử lý như bộ đồng xử lý toán 80287
+ PEREQ: tín hiệu từ bộ đồng xử lý là một toán hạng đã được gửi
+ -PEACK: Báo cho bộ đồng xử lý là 1 toán hạng đã được gửi
+ -BUSY: tín hiệu từ bộ đồng xử lý báo bận
+ -ERROR: tín hiệu từ bộ đồng xử lý báo lỗi
- -BHE: Khi kết hợp với chân A0 sẽ cho các chỉ thị sau:
0 0 Một từ đã được truyền qua D15÷D0
0 1 1 byte trên D15÷D8 được truy xuất tới địa chỉ lẻ (vd 2F05H)
1 0 1 byte trên D15÷D8 được truy xuất tới địa chỉ chẵn (vd 2F04H)
- COD/-INTA: mức tích cực thấp là tín hiệu trả lời ngắt
- M/-IO: Nếu =1 truy xuất bộ nhớ
Nếu =0 Truy xuất bộ phận vào/ra
Khi bộ nhớ hoặc thiết bị ngoại vi hoàn tất việc chuyển dữ liệu, chúng cần phát tín hiệu READY ở mức tích cực 1 tới vi xử lý Chỉ khi nhận được tín hiệu này, vi xử lý mới tiến hành đọc hoặc xuất dữ liệu.
Bộ vi xử lý 80286 tạo ra các tín hiệu trạng thái, sau đó gửi tới chip bộ điều khiển bus 82288 Chip này sẽ giải mã các tín hiệu trạng thái và phát ra tín hiệu điều khiển tới các bus cụ thể.
Cấu hình bên trong
CPU 80286 được cấu thành từ 4 đơn vị chính như sau:
BU bao gồm các đệm địa chỉ, điều khiển và dữ liệu, thực hiện giao diện BUS Nó tạo ra và nhận các tín hiệu địa chỉ, điều khiển và dữ liệu, đồng thời nhập lệnh từ bộ nhớ vào hàng đợi.
IU gồm bộ giải mã lệnh và hàng đợi lệnh đã giải mã Đơn vị lệnh IU thực hiện giải mã lệnh và đưa vào hàng đợi
- Đơn vị thực hiện EU : EU thực hiện lệnh đã được giải mã
EU bao gồm đơn vị điều khiển, các thanh ghi và đơn vị số học – logic
Đơn vị điều khiển CU (Control Unit) có vai trò quan trọng trong việc giải mã lệnh và phát tín hiệu điều khiển cho các đơn vị chức năng khác, cả bên trong và bên ngoài CPU Nhờ vào sự điều phối của CU, các lệnh được thực thi một cách chính xác theo nhịp xung đồng hồ Clock, đảm bảo hoạt động hiệu quả của hệ thống.
+ Đơn vị số học – logic ALU (Arithmetic – Logic Unit) : ALU thực hiện các phép tính số học, logic và các phép xử lý dữ liệu khác
AU (đơn vị địa chỉ)
+ Các thanh ghi dùng để chứa địa của ô nhớ, chứa dữ liệu, hay trạng thái kết quả của phép tính
…trong quá trình CPU thực hiện chương trình
Đơn vị địa chỉ AU bao gồm các thanh ghi đoạn và thanh ghi trong chế độ bảo vệ, cùng với bộ cộng địa chỉ offset Nó có chức năng tạo địa chỉ vật lý từ địa chỉ logic và quản lý bộ nhớ trong cả hai chế độ làm việc: chế độ thực và chế độ bảo vệ.
Quản lý bộ nhớ trong chế độ thực và các thanh ghi đoạn
Trong chế độ quản lý bộ nhớ theo phân đoạn (segmentation), bộ nhớ được giám sát và định vị theo từng đoạn Mỗi chương trình không được coi là một chuỗi liên tục mà được chia thành các modul như mã lệnh, dữ liệu và ngăn xếp, với mỗi modul được lưu trữ trong một đoạn nhớ có địa chỉ xác định Đối với CPU 16bit, mỗi đoạn có kích thước 64Kb, cho phép hệ điều hành đặt các modul của chương trình ở bất kỳ vị trí nào trong bộ nhớ vật lý, với tên gọi đoạn nhớ tương ứng với loại modul chứa.
Có 4 loại đoạn khác nhau:
+ Đoạn mã lệnh (code segment): chứa mã lệnh của chương trình
+ Đoạn dữ liệu (data segment): chứa dữ liệu của chương trình
+ Đoạn ngăn xếp (stack segment): là đoạn chứa các thông tin và dữ liệu phục vụ chương trình con + Đoạn mở rộng (extra segment): chứa dữ liệu mở rộng
Mỗi đoạn trong bộ nhớ máy tính được xác định bởi một địa chỉ gọi là địa chỉ đoạn CPU sử dụng các thanh ghi đoạn 16 bit như CS, DS, SS và ES để quản lý và truy cập các đoạn này Trong chế độ thực, các thanh ghi đoạn sẽ chứa địa chỉ của đoạn tương ứng.
+ Thanh ghi CS chứa địa chỉ đoạn mã lệnh
+ Thanh ghi DS chứa địa chỉ đoạn dữ liệu
+ Thanh ghi SS chứa địa chỉ đoạn ngăn xếp
+ Thanh ghi ES chứa địa chỉ đoạn mở rộng
Địa chỉ đoạn xác định vị trí trong bộ nhớ, với địa chỉ nền của đoạn vật lý được tính bằng cách dịch trái địa chỉ đoạn 4 bit và thêm 4 bit 0 vào phía dưới.
Mỗi ô nhớ trong đoạn được xác định bởi một cặp số, bao gồm địa chỉ đoạn và địa chỉ offset, trong đó địa chỉ offset chỉ ra vị trí của ô nhớ so với nền đoạn Cặp số này được gọi là địa chỉ logic của ô nhớ, được biểu diễn dưới dạng địa chỉ đoạn : địa chỉ offset.
Ta có 2 cặp thanh ghi sau luôn đi với nhau : CS : IP và SS : SP
+ IP : Chứa địa chỉ offset của ô nhớ trong đoạn mã lệnh chứa lệnh CPU cần nhập để thực hiện
+ SP : Chứa địa chỉ offset của ô đỉnh ngăn xếp trong đoạn ngăn xếp
Khi truy cập dữ liệu, lập trình viên cần xác định offset của các ô nhớ bằng các phương pháp định vị toán hạng.
- Ta có thể hình dung cơ chế quản lý bộ nhớ trong chế độ thực như hình vẽ sau :
Cách tính địa chỉ vật lí
B1: Dịch trái địa chỉ đoạn đi 4 bit và điền các bit 0 vào 4 bit thấp
B2: Cộng địa chỉ offset với địa chỉ đoạn sau khi dịch trái
Công thức tính: Địa chỉ vật lý = Địa chỉ đoạn *10 + Địa chỉ offset (tính trong hệ hexa)
Vd: địa chỉ logic 1234h:0005h sẽ ứng với địa chỉ vật lí 1234h * 10h + 0005h = 12340h + 0005h = 12345h
Do các segment gối đầu nhau, mỗi ô nhớ có thể thuộc nhiều segment khác nhau, dẫn đến việc một địa chỉ vật lý có thể tương ứng với nhiều địa chỉ logic khác nhau.
Vd: địa chỉ vật lí 12345h có thể ứng với các địa chỉ logic sau:
Ta có thể thấy rõ hơn về cơ chế quản lý bộ nhớ trong chế độ thực qua hình vẽ dưới:
+ Các đoạn không được xếp tuần tự nhau mà được xếp chồng gối lên nhau
+ Khoảng cách tối thiểu của mỗi đoạn là cách nhau 16 ô nhớ hay cách nhau 16bytes.
Các thanh ghi
Các thanh ghi là đơn vị lưu trữ dữ liệu trong CPU với tốc độ truy cập nhanh, được sử dụng để lưu trữ toán hạng của lệnh và kết quả tạm thời của quá trình tính toán Trong vi xử lý 80286, các thanh ghi được phân chia thành nhiều nhóm khác nhau.
Các thanh ghi đa năng AX, BX, CX, DX :
AX, BX, CX, DX là các thanh ghi đa năng 16 bit, được dùng để chứa các toán hạng của lệnh hoặc các kết quả của phép tính
Các thanh ghi 16 bit như AX, BX, CX, DX có thể được truy cập, đồng thời cũng có thể truy cập các thanh ghi 8 bit như AH, AL, BH, BL, CH, CL, DH, DL.
Các thanh ghi AX, BX, CX, DX còn có các chức năng mặc định riêng trong một số ngữ cảnh cụ thể sau :
- AX (Accumulator): Khi gọi các hàm chức năng của hệ điều hành qua lệnh INT, thanh ghi
AX hoặc AH được dùng để chứa con số xác định một chức năng cụ thể cần thực hiện của hàm này
VD : INT 21 thực hiện hàm 5B- Tạo tập tin mới thì AH[
BX (Base) là thanh ghi được sử dụng để xác định địa chỉ offset hoặc địa chỉ offset nền của ô nhớ trong đoạn khi thực hiện các lệnh truy nhập đoạn dữ liệu.
- CX (Counter): Khi thực hiện các lệnh LOOP hoặc REP, CX đóng vai trò một bộ đếm (chứa số đếm), xác định số lần thực hiện lặp
Để thực hiện lặp n lần, ta sử dụng biến đếm CX=n Giá trị của CX sẽ giảm dần 1 sau mỗi lần lặp cho đến khi CX đạt giá trị 0, lúc này quá trình lặp sẽ kết thúc.
DX (Data) là thanh ghi được sử dụng để lưu trữ hai byte cao của kết quả phép nhân hoặc phần dư của phép chia 16 bit Khi truy cập các cổng vào/ra có địa chỉ lớn hơn 255, DX sẽ chứa địa chỉ xác định cho các cổng này.
VD : DX78H là địa chỉ của cổng máy in
Các thanh ghi địa chỉ BP, SI, DI, SP: là các thanh ghi 16 bit
BP (Base Pointer) là một thanh ghi được sử dụng để xác định địa chỉ offset hoặc địa chỉ offset nền của ô nhớ trong quá trình thực hiện các lệnh truy cập dữ liệu Thông thường, BP được áp dụng để xác định địa chỉ offset khi truy cập vào đoạn ngăn xếp.
SI (Source Index) là một thanh ghi được sử dụng để xác định địa chỉ offset hoặc một phần của địa chỉ offset khi truy cập dữ liệu Nó thường chứa địa chỉ offset của chuỗi ký tự trong đoạn dữ liệu (DS: SI) khi thực hiện các lệnh thao tác chuỗi.
DI (Destination Index) là một thanh ghi được sử dụng để xác định địa chỉ offset hoặc một phần của địa chỉ offset khi truy cập dữ liệu Thường thì DI chứa địa chỉ offset của xâu ký tự trong đoạn mở rộng (ES), đặc biệt khi thực hiện các lệnh thao tác xâu.
- SP (Stack Pointer) : Con trỏ ngắn xếp SP chứa địa chỉ offset của ô nhớ trong đoạn ngăn xếp SP luôn trỏ đến đỉnh ngăn xếp
Nhóm thanh ghi đoạn CS, DS, SS, ES : Là các thanh ghi 16bit, trong quản lý bộ nhớ theo cơ chế phân đoạn thì
CS : Chứa địa chỉ đoạn của đoạn mã lệnh
DS : Chứa địa chỉ đoạn của đoạn dữ liệu
ES : Chứa địa chỉ đoạn của đoạn mở rộng
SS : Chứa địa chỉ đoạn của đoạn ngăn xếp
Các thanh ghi điều khiển và trạng thái :
Con trỏ lệnh IP (Instruction Pointer) là một thanh ghi 16 bit chứa địa chỉ offset của ô nhớ trong đoạn mã lệnh Khi CPU thực hiện lệnh, IP sẽ tự động tăng lên và trỏ đến ô nhớ chứa lệnh tiếp theo Nội dung của IP có thể thay đổi đột ngột khi CPU thực hiện các lệnh nhảy, gọi chương trình con, hoặc bị ảnh hưởng bởi các cơ chế ngắt cứng và mềm.
- Thanh ghi cờ FLAGS : là thanh ghi 16 bit chứa các bít thông tin phản ánh trạng thái của kết quả phép tính
Một số bit cờ như IF, TF, IOPL ảnh hưởng đến hoạt động của CPU
Không thể tác động trực tiếp đến toàn bộ thanh ghi cờ; thay vào đó, chỉ có thể điều chỉnh một số bit cờ thông qua các lệnh như CLC, STC, CLI, STI, CLD và STD.
- CF (Carry Flag) : cờ nhớ ; Nếu có hiện tượng nhớ từ bit cao nhất khi thực hiện phép tính thì
CF = 1 Các lệnh CLC, STC và các lệnh dịch bit, quay vòng ảnh hưởng tới cờ này
- PF (Parity Flag) : cờ kiểm tra chẵn lẻ ; Nếu lượng các bit 1 trong kết quả chẵn thì PF=1
Cờ AF (Auxiliary Flags) là cờ nhớ phụ được sử dụng trong các phép tính số học với số BCD (Binary Code Decimal) Cờ AF sẽ có giá trị bằng 1 nếu có sự nhớ hoặc mượn xảy ra ở 4 bit thấp.
- ZF (Zero Flag) : cờ zero Nếu kết quả phép tính bằng không thì ZF = 1
- SF (Sign Flag): cờ dấu ; Nếu kết qủa âm (bít cao nhất của kết quả có giá trị 1) thì SF =1
Cờ bẫy (TF - Trap Flag) là một tín hiệu cho phép CPU hoạt động ở chế độ gỡ lỗi, với TF = 1 Khi ở chế độ này, mỗi lệnh hoàn thành sẽ tạo ra một ngắt logic (ngắt 01H) để kích hoạt chương trình hiệu chỉnh.
- IF (Interrupt Flag) : cờ ngắt ; Nếu IF = 1, cho phép CPU phản ứng với tín hiệu báo ngắt INT Dùng lệnh CLI hoặc ST1 tác động được vào cờ này
- DF (Direction Flag): cờ hướng ; DF xác định hướng tăng hoặc giảm của các thanh ghi
SI DI khi thực hiện các lệnh thao tác xâu ký tự
Nếu DF = 1 thì SI và DI giảm
Nếu DF = 0 thì SI và DI tăng
Dùng lệnh STD và CLD tác động được vào bít cờ này
- OF (Overflow Flag) : cờ tràn ; OF được dùng trong các phép tính số học dấu chấm động OF
= 1 nếu kết quả quá lớn hoặc quá nhỏ, vượt quá khả năng biểu diễn của máy tính (bị tràn)
- Hai cờ NT và IOPL (I/O Privilege Level) chỉ được dùng trong chế độ bảo vệ
Thanh ghi trạng thái máy (MSW) :
- PE (Protected Mode Enable) cho phép chế độ bảo vệ Nếu PE = 1 : cho phép CPU làm việc ở chế độ bảo vệ Khi khởi động máy tính thì PE = 0
- MP (Monitor CoProcessor): MP được dùng để đồng bộ hoạt động của CPU và bộ đồng xử lý
- EM (Emulation) : EM = 0 cho phép thực hiện các mã lệnh dấu phảy động trên bộ đồng xử lý
EM = 1 khi CPU xử lý mã lệnh dấu phẩy động, sẽ tạo ra ngoại tệ để kích hoạt chương trình thực hiện phép tính dấu chấm động, tương tự như một bộ đồng xử lý.
- TS (Task Switch) dùng ở chế độ đa nhiệm Lệnh LMSW tác động được vào thanh ghi này
CPU 80286 còn có các thanh ghi khác như sau : (Hoạt động trong chế độ bảo vệ)
- Thanh ghi nhiệm vụ TR (Task Register)
- Thanh ghi bảng mô tả cục bộ LDT (Local Descriptor Table)
- Thanh ghi bảng mô tả ngắt IDT (Interrupt Descriptor Table)
- Thanh ghi bảng bộ mô tả toàn cục GDT (Global Descriptor Table)
- Thanh ghi từ trạng thái máy MSW (Machine Status Word).
Quản lý bộ nhớ trong chế độ bảo vệ
Chế độ bảo vệ (Protected Mode) được phát triển cho các CPU dòng Intel từ 80286 và các CPU 32 bit sau này, nhằm hỗ trợ hệ điều hành đa nhiệm Chế độ này giúp cách ly và bảo vệ hệ điều hành khỏi các truy cập trái phép từ chương trình ứng dụng, đồng thời cũng bảo vệ các chương trình ứng dụng khỏi sự can thiệp của các chương trình khác.
1.4.5.1- Các mức đặc quyền và luật về quyền truy nhập
Trong chế độ bảo vệ, mỗi đoạn nhớ được cấp một mức đặc quyền nhất định và được bảo vệ thông qua cơ chế quyền truy nhập Các mức đặc quyền này được thiết kế để tối ưu hóa hoạt động của hệ điều hành đa nhiệm.
Để bảo vệ hệ điều hành khỏi các truy cập trái phép, cần thực hiện cách ly và bảo vệ hệ thống này Đồng thời, cũng cần cách ly và bảo vệ các chương trình ứng dụng khỏi sự truy cập trái phép từ các ứng dụng khác.
Dựa vào mức đặc quyền và luật về quyền truy nhập mà CPU sẽ quyết định cho phép hay không cho phép truy nhập đoạn nhớ yêu cầu
Các mức đặc quyền (ký hiệu là PL - Privilêg Level) nằm trong một hệ thống các mức đặc quyền 4 cấp
+ Đặc quyền mức PL = 0, mức đặc quyền cao nhất Mức đặc quyền PL = 0 được gắn cho các chương trrình quản lý thiết bị và quản lý bộ nhớ
Đặc quyền mức PL = 1 được áp dụng cho các chương trình thiết lập mức ưu tiên giữa các nhiệm vụ, bao gồm chương trình hoàn đổi dữ liệu giữa bộ nhớ chính và bộ nhớ thứ cấp, quản lý các cổng vào/ra và các dịch vụ hệ thống khác.
+ Đặc quyền mức PL = 2 Mức đặc quyền PL = 2 được gắn cho các chương trình quản lý tệp, thư mục và các chức năng mở rộng của hệ điều hành
+ Đặc quyền mức PL = 3 mức thấp nhất mức đặc quyền PL = 3 được gán cho các chương trình ứng dụng
Các luật về quyền truy nhập: luật về quyền truy nhập xác định quy tắc truy nhập đoạn nhớ Luật 1:
Dữ liệu trong đoạn nhớ có mức đặc quyền PL = P chỉ có thể được truy cập bởi mã lệnh có mức đặc quyền bằng hoặc cao hơn P Điều này có nghĩa là mức đặc quyền của nhiệm vụ đang thực hiện (CPL) phải thấp hơn hoặc bằng mức đặc quyền của đoạn dữ liệu (DPL) mà nó đang cố gắng truy cập.
Luật 2: Đoạn mã lệnh có mức đặc quyền PL = P có thể bị gọi hoặc truy nhập bởi nhiệm vụ có mức đặc quyền bắc hoặc thấp hơn P đoạn mã lệnh có mức đặc quyền thấp có thể gọi hoặc truy nhập đoạn mã lệnh có mức đặc quyền cao hơn thông qua cổng gọi
Theo các quy định về quyền truy cập, chương trình đang thực hiện có khả năng truy cập tự do vào các đoạn mã lệnh và dữ liệu có cùng mức quyền hạn.
Một chương trình có thể truy cập vào dữ liệu với mức đặc quyền thấp, nhưng để truy cập hoặc gọi đoạn mã lệnh có mức đặc quyền cao hơn, cần phải thông qua cổng gọi.
1.4.5.2 Quản lý bộ nhớ theo phân đoạn trong chế độ bảo vệ
Các đoạn nhớ trong chế độ bảo vệ được quản lý theo ba thông số:
Do kích thước lớn của các đoạn thông tin, chúng không thể được lưu trữ trong thanh ghi đoạn mà phải được lưu trữ trong các bộ mô tả đoạn Những bộ mô tả này được tổ chức trong bảng bộ mô tả.
Có ba loại bảng bộ mô tả
- Bảng bộ mô tả toàn cục GDT (bảng GDT - Global Descriptor Table)
Bảng GDT quản lý các vùng nhớ chứa chương trình và dữ liệu của hệ điều hành, bao gồm thông tin toàn cục trong không gian nhớ Các chương trình ứng dụng có khả năng truy cập vào các vùng nhớ này.
Bảng bộ mô tả cục bộ (LDT - Local Descriptor Table) quản lý các vùng nhớ thuộc một nhiệm vụ, bảo vệ mã lệnh và dữ liệu của nhiệm vụ đó khỏi sự truy nhập trái phép từ các nhiệm vụ khác Các bảng LDT nằm trong không gian nhớ toàn cục Trong khi đó, bảng bộ mô tả ngắt (IDT - Interrupt Descriptor Table) chứa các bộ mô tả cho 256 chương trình phục vụ ngắt, đóng vai trò như bảng vectơ ngắt, với mỗi véc tơ ngắt là một bộ mô tả riêng biệt.
Tất cả các Bảng bộ mô tả đều nằm trong bộ nhớ chính a) Bộ chọn đoạn 16 bít
Trong chế độ bảo vệ, các thanh ghi đoạn như CS, DS, ES, và SS không còn được sử dụng để xác định địa chỉ nền đoạn như trong chế độ thực, mà thay vào đó, chúng được dùng để chọn bộ mô tả đoạn trong Bảng bộ mô tả Bộ chọn đoạn đóng vai trò xác định vị trí của bộ mô tả đoạn trong Bảng bộ mô tả, và lập trình viên cần nạp bộ chọn đoạn vào thanh ghi đoạn tương ứng khi muốn truy cập vào một đoạn cụ thể.
Bộ chọn đoạn có ba phần :
+ Phần Index: 13 bít, dùng để xác định vị trí của Bộ mô tả đoạn, tính từ nền của Bảng bộ mô tả
+ TI : xác định loại Bảng bộ mô tả cần truy nhập
TI = 1 truy nhập các bảng LDT
TI = 0 truy nhập bảng GDT
+ RPL (Requested Privilege Level) : mức đặc quyền yêu cầu Mức đặc quyền RPL được sinh ra bởi người nạp bộ chọn đoạn
Bộ mô tả đoạn chứa các thông tin quản lý một đoạn: địa chỉ nền đoạn, kích thước (giới hạn) đoạn và quyền truy nhập đoạn
Bộ mô tả đoạn được hệ điều hành, trình biên dịch hoặc trình nạp bộ nhớ tạo ra
Bộ mô tả đoạn gồm 8 byte:
Trường địa chỉ nền đoạn (24 bít: A23 - A0) xác định địa chỉ nền của đoạn, trong khi ở hệ 16 bít, địa chỉ này cũng là địa chỉ vật lý nền của đoạn Bên cạnh đó, trường giới hạn đoạn (16 bít: L15 - L0) xác định kích thước của đoạn, với kích thước dao động từ 1 byte đến 64Kb.
Trường quyền truy nhập (8 bit) xác định mức đặc quyền và các thuộc tính khác của đoạn:
P - (Present) : Nếu P = 1 đoạn đang tồn tại trong bộ nhớ
Khi P = 0, CPU sẽ tạo ra ngoại tệ "không tồn tại đoạn" khi người dùng yêu cầu chọn đoạn này DPL (Descriptor Privilege Level) xác định mức đặc quyền của bộ mô tả, phản ánh mức độ đặc quyền của đoạn.
DT - Descriptor Type) : xác định loại bộ mô tả
DT = 1 Bộ mô tả đoạn mã lệnh hoặc dữ liệu
DT = 0 Bộ mô tả đoạn hệ thống hoặc cổng giao dịch
Cấu trúc của bộ mô tả phụ thuộc vào loại bộ mô tả, bao gồm các loại như bộ mô tả đoạn dữ liệu, bộ mô tả đoạn mã lệnh và bộ mô tả đoạn hệ thống Đặc biệt, bộ mô tả đoạn hệ (DT = 0) chia thành hai loại: bộ mô tả LDT và bộ mô tả TSS Ngoài ra, bộ mô tả cổng giao dịch (DT = 0), còn gọi là cổng giao dịch, được sử dụng để truy cập vào các đoạn mã lệnh Các bộ mô tả này sẽ được trình bày chi tiết trong các phần tiếp theo.
- Cấu trúc của byte quyền truy nhập trong Bộ mô tả đoạn dữ liệu:
ED (Expansion Direction): xác định hướng truy nhập đoạn (hướng tiến triển của địa chỉ)
ED = 1 : hướng địa chỉ giảm, đoạn dữ liệu là loại ngăn xếp
ED = 0 : hướng địa chỉ tăng
W/R (Wrie/Read): xác định quyền ghi/đọc
W/R = 1 : cho ghi/đọc đoạn, dữ liệu
W/R = 0 cấm ghi đoạn dữ liệu
A = 1 đoạn đã bị truy nhập
- Cấu trúc của byte quyền truy nhập trong Bộ mô tả đoạn mã lệnh:
C = 0 chương trình con sẽ thực hiện với mức đặc quyền PL = DPL
C = 1 chương trình sẽ thực hiện với mức đặc quyền PL bằng mức đặc quyền của đoạn chứa chương trình gọi chương trình con này
R = 0 : Đoạn mã lệnh thực hiện được
R = 1 : Đoạn mã lệnh thực hiện được và đọc được
A (Accessed): A = 1 đoạn mã lệnh đã bị truy nhập
- Cấu trúc của byte quyền truy nhập trong Bộ mô tả đoạn hệ thống:
Bộ mô tả đoạn hệ thống (Bộ mô tả TSS, Bộ mô tả LDT) quy chiếu đến (trỏ đến) các đoạn chứa thông tin hệ thống
- Kiểu = 1: Bộ mô tả quy chiếu đến đoạn trạng thái nhiệm vụ TSS, nhiệm vụ này không ở trạng thái đang thực hiện
- Kiểu = 2 : Bộ mô tả quy chiếu đến đoạn chứa bảng LDT
- Kiểu = 3: Bộ mô tả quy chiếu đến đoạn trạng thái nhiệm v ụ TSS của nhiệm vụ đang thực hiện
Cơ chế đa nhiệm
Nhiệm vụ được hiểu là việc thực hiện một chương trình, trong đó mỗi nhiệm vụ có một đoạn trạng thái nhiệm vụ (TSS) lưu trữ toàn bộ thông tin về trạng thái của nó Các đoạn TSS được quản lý bởi Bộ mô tả TSS trong bảng GDT CPU x86 hỗ trợ phần cứng cho việc chuyển nhiệm vụ, cho phép lưu và bảo vệ trạng thái hoạt động của nhiệm vụ hiện tại, bao gồm các thanh ghi của CPU, không gian địa chỉ liên quan và Bộ chọn LDT Sau khi lưu trữ, trạng thái của nhiệm vụ tiếp theo sẽ được nạp từ đoạn TSS tương ứng.
CPU, kiểm tra quyền truy nhập và bắt đầu thực hiện nhiệm vụ mới
Thanh ghi nhiệm vụ TR (Task Register) trỏ đến Bộ mô tả TSS quản lý nhiệm vụ hiện thời
Thao tác chuyển nhiệm vụ được tiến hành theo các bước sau :
Lưu trữ toàn bộ trạng thái hoạt động của nhiệm vụ đang thực hiện, bao gồm nội dung tất cả các thanh ghi CPU, các địa chỉ liên quan và Bộ chọn LDT, vào đoạn trạng thái nhiệm vụ TSS của nhiệm vụ đó.
+ Nạp Bộ chọn nhiệm vụ tiếp theo vào thanh ghi TR Thanh ghi TR trỏ đến Bộ mô tả TSS quản lý đoạn TSS của nhiệm vụ tiếp theo
Bộ mô tả TSS truy cập đoạn TSS của nhiệm vụ tiếp theo và nạp trạng thái của nhiệm vụ đó vào các thanh ghi của CPU, bao gồm cả thanh ghi LDTR Thông tin này được lưu trữ trong phần kín của TR.
+ Thực hiện kiểm tra quyền truy nhập
+ Thực hiện nhiệm vụ tiếp theo.
Các chế độ xác định địa chỉ toán hạng
CPU thực hiện chương trình bằng cách thực hiện tuần tự các lệnh trong bộ nhớ chính
Cấu trúc của một lệnh có thể có các dạng sau:
- Mã lệnh: là phần chứa thông tin xác định các thao tác hoặc công việc cần được thực hiện
CPU x86 thực hiện một tập các nhóm lệnh:
- Nhóm lệnh số học: ADD, SUB, MUL, DIV,
- Nhóm lệnh chuyển số liệu: MOV, PUSH, POP
- Nhóm lệnh rẽ nhánh và điều khiển: JMP, CALL, RET, INT, LOOP, CLI, STI,
- Nhóm lệnh vào ra: IN, OUT
- Các lệnh khác: logic, thao tác bít, xử lý xâu
- Phần địa chỉ : là phần thông tin xác định nơi chứa toán hạng
Các nơi có thể chứa toán hạng:
+ Tức thời trong lệnh (giá trị toán hạng nằm ngay trong lệnh)
+ Các thanh ghi của CPU
1.4.7.2 Các phương pháp xác định địa chỉ toán hạng
Các phương pháp xác định địa chỉ toán hạng cho phép xác định vị trí chứa toán hạng, có thể là trên lệnh, thanh ghi hoặc bộ nhớ Bộ nhớ mặc định được hiểu là đoạn dữ liệu, trong đó việc xác định địa chỉ ô nhớ là xác định địa chỉ offset hiệu dụng của ô nhớ trong đoạn đó Trong một số trường hợp, cần chỉ rõ đoạn nhớ cần truy cập, ví dụ như sử dụng cú pháp ES: [địa chỉ offset].
Có ba nhóm chế độ định vị toàn hạng
Các thao tác có thể xẩy ra giữa các đối tượng sau:
- Định vị tức thời: Dữ liệu nằm ngay trong câu lệnh
Ví dụ: MOV AX 0F000h: đưa giá trị F000h vào AX
- Định vị thanh ghi : Các thanh ghi đa năng, các thanh ghi địa chỉ hoặc các thanh ghi đoạn của CPU là nơi chứa dữ liệu
Ví dụ: MOV AX BX: đưa giá trị ở BX và AX
Phương pháp định vị bộ nhớ giúp xác định địa chỉ offset của ô nhớ chứa toán hạng, với ô nhớ mặc định nằm trong đoạn dữ liệu.
Có các phương pháp định vị bộ nhớ sau:
- Định vị cơ sở chỉ số
+ Định vị trực tiếp : Địa chỉ ô nhớ chứa dữ liệu nằm ngay trong lệnh Địa chỉ offset = [giá trị cụ thể]
Ví dụ: MOV AX, [1000h]: Đưa nội dung ô nhớ có địa chỉ
MOV AX ALFA: ALFA là tên tiến đã được khai báo
+ Định vị gián tiếp (thanh ghi)
Các thanh ghi địa chỉ BX, BP, SI, DI, SP là nơi chứa địa chỉ ô dữ liệu
Ví dụ: MOV AX, [BX] ;
Trong đó [BX]: = 1000h : lệnh thực hiện đưa nội dung ô nhớ có địa chỉ
Phương pháp định vị cơ sở thường được dùng trong các thao tác với phần tử mảng dữ liệu hoặc với các cấu trúc dữ liệu tương đương
Ví dụ: MOV AX, [BX + 10h] ;
Trong đó [BX] = 1000h, lệnh thực hiện đưa nội dung ô nhớ có địa chỉ
Ví dụ: MOV AX, [SI + 1000h] ;
Trong bài viết này, chúng ta sẽ tìm hiểu về lệnh thực hiện trong lập trình, cụ thể là lệnh đưa nội dung ô nhớ tại địa chỉ DS:1010h vào thanh ghi AX với chỉ số [SI] = 10h Điểm khác biệt giữa phương pháp định vị chỉ số và phương pháp định vị cơ sở trong hệ 32 bit là khả năng sử dụng (SI*bội số) và (DI*bội số), trong đó bội số có thể là 1, 2, 4 hoặc 8.
- Định vị cơ sở chỉ số :
Ví dụ: MOV AX, [BX + SI] ; trong đó [BX] 00h, [SI] h Lệnh thực hiện đưa nội dung ô nhớ có địa chỉ DS:1010h vào AX
Phương pháp định vị cơ sở chỉ số thường được dùng trong các thao tác với mảng dữ liệu hoặc với các cấu trúc dữ liệu tương đương
- Định vị đầy đủ : Địa chỉ offset= [Thanh ghi cơ sở + Thanh ghi chỉ số + khoảng dịch]
Phương pháp định vị này thường được dùng trong các thao tác với mảng dữ liệu hai chiều hoặc với các cấu trúc dữ liệu phức tạp.