Bài 1: TỔNG QUAN VỀ MÁY TÍNH
1.1 Giới thiệu chung
1.1.1 Giới thiệu
Máy tính (computer) - còn gọi là máy điện toán - là những thiết bị hay hệ
thống dùng để lưu trữ, xử lý thông tin. Máy tính được cấu thành bởi các thành
phần chức năng cơ bản đã xây dựng trước. Quá trình tác động tương hỗ phức tạp
của các thành phần này tạo cho máy tính có tiềm năng to lớn trong xử lý thông tin.
Nếu chương trình máy tính được xây dựng một cách chính xác, máy tính có thể mô
phỏng lại một số khía cạnh của một vấn đề hay của một hệ thống nào đó trong thế
giới thực.
Kể từ khi ra đời từ những năm 1950, những tiến bộ trong khoa học và công nghệ không
ngừng phát triển, các tính năng của máy tính được ngày càng hoàn thiện. Tuy nhiên, các nguyên
lý hoạt động cũng như kiến trúc của máy tính vẫn chưa thay đổi đáng kể. Bài này tập trung giới
thiệu các nguyên lý thiết kế máy tính cơ bản.
1.1.2 Máy tính điện tử
Do sự phát triển nhanh của lĩnh vực ứng dụng máy tính, đã có nhiều quan
niệm khác nhau về máy tính điện tử. Theo nghĩa chung nhất, người ta quan niệm
máy tính điện tử (người ta thường gọi tắt là máy tính) như sau : “máy tính điện tử
là phương tiện được xây dựng dựa trên các linh kiện điện tử để thực hiện các phép
tính toán, biến đổi toán học, ”.
Có hai loại máy tính điện tử đó là :
- Máy tính số (Digital Computer) là máy tính có nhiệm vụ xử lý dữ liệu được
biểu diễn dưới dạng các đại lượng rời rạc như : bóng đèn, transistor,….
- Máy tính tương tự làm việc với các dữ liệu được biểu diễn dưới dạng các đại
lượng liên tục điện từ, điện áp,…
Hệ thống máy tính thường được cấu thành bởi hai thành phần đó là phần
cứng và phần mềm :
- Phần cứng (Hardware) là các đối tượng vật lý hữu hình như : bản mạch
chính (Mainboard), bộ nhớ trong (RAM), đĩa cứng (HardDisk), màn hình (Display
Screen),…
1
- Phần mềm (Software): là các chương trình được cài đặt trên máy tính nhằm
thực hiện các thao tác theo yêu cầu của con người. Mỗi phần mềm máy tính là một
ánh xạ của phần cứng máy tính, hay còn gọi là máy ảo.
1.1.3 Phân loại máy tính
Dựa vào kích thước vật lý, hiệu suất và lĩnh vực sử dụng, người ta chia máy
tính số thành 5 loại cơ bản sau, các loại có thể trùm lên nhau một phần:
- MicroComputer: còn gọi là PC (personal computer), là những máy tính
có kích thước nhỏ, năng lực lưu trữ và tính toán thấp. MicroComputer thường được
dùng bởi một người và thực thi các ứng dụng phục vụ cho công việc cá nhân như
các ứng dụng văn phòng, giải trí,
- MiniComputer: là những máy tính cỡ trung bình, kích thước thường lớn
hơn PC. MiniComputer có khả năng hỗ trợ hàng trăm người sử dụng đồng thời, và
thường dùng để thực hiện các ứng dụng có khối lượng tính toán lớn như dịch vụ
Web, dịch vụ Mail,….
- Mainframe: là loại máy tính cỡ lớn, có khả năng hỗ trợ hàng ngàn người
sử dụng tính đa dụng. Nó có thể dùng cho các ứng dụng quản lý hoặc xử lý các
giao dịch như trong ngân hàng,…cũng như các tính toán khoa học. Mainframe
thường dùng kỹ thuật xử lý song song và có hệ thống vào/ra mạnh. Giá một máy
tính lớn có thể từ vài trăm ngàn USD đến hàng triệu USD.
- SuperComputer: Đây là các siêu máy tính, đắt tiền nhất và tính năng kỹ
thuật cao nhất, được thiết kế đặc biệt để đạt được tốc độ thực hiện các phép tính
dấu phẩy động cao nhất có thể được. Các siêu máy tính thường là các máy tính
vectơ hay các máy tính dùng kỹ thuật vô hướng và được thiết kế để tính toán khoa
học, mô phỏng các hiện tượng. Các siêu máy tính được thiết kế với kỹ thuật xử lý
song song với rất nhiều bộ xử lý (hàng ngàn đến hàng trăm ngàn bộ xử lý trong
một siêu máy tính).
2
1.2 Nguyên lý thiết kế máy tính cơ bản
1.2.1 Nguyên lý Turing
Alan Turing (1912 - 1954) là một nhà toán học người Anh đã đưa ra một
thiết bị tính đơn giản gọi là máy Turing. Về lý thuyết, mọi quá trình tính toán có
thể được thì đều có thể mô phỏng lại trên máy Turning. Máy Turning gồm có :
- Một bộ điều khiển trạng thái hữu hạn (finite control), trong đó có các
trạng thái đặc biệt như trạng thái khởi đầu và trạng thái kết thúc.
- Một băng ghi (tape) chứa tín hiệu trong các ô.
- Một đầu đọc (head) và ghi có thể di chuyển theo 2 chiều trái hoặc phải
một đơn vị.
Hình 1.1: Sơ đồ máy Turing
Ðầu đọc/ghi mang chức năng thông tin nối giữa Bộ điều khiển hữu hạn và
băng ghi. Ðầu bằng cách đọc dấu hiệu từ băng và cũng dùng nó để thay đổi dấu
hiệu trên băng. Bộ kiểm soát vận hành theo từng bước riêng biệt; mỗi bước nó thực
hiện 2 chức năng tùy thuộc vào trạng thái hiện tại của nó và tín hiệu hiện tại của
băng:
(1) Ðặt bộ điều khiển ở trạng thái ban đầu q1, băng trắng và đầu đọc/ghi chỉ
vào ô khởi đầu.
(2) Nếu:
(a) trạng thái hiện tại q trùng với trạng thái kết thúc qo thì máy sẽ dừng.
(b) ngược lại, trạng thái q sẽ chuyển qua q, tín hiệu trên băng s thành s và đầu đọc
dịch chuyển sang phải hoặc trái một đơn vị. Máy hoàn thành xong một bước tính
toán và sẵn sàng cho bước tiếp theo.
1.2.2 Nguyên lý Von Neumann
3
Năm 1946, nhà toán học Mỹ Von Neumann (1903 - 1957) đã đề ra một
nguyên lý máy tính hoạt động theo một chương trình được lưu trữ và truy nhập
theo địa chỉ. Nguyên lý này được trình bày ở một bài báo nổi tiếng nhan đề: “Thảo
luận sơ bộ về thiết kế logic của máy tính điện tử”. Nội dung nguyên lý Von
Neumann gồm:
(i) Máy tính có thể hoạt động theo một chương trình đã được lưu trữ
Theo Von Neumann, chúng ta có thể tập hợp các lệnh cho máy thi hành theo
một chương trình được thiết kế và coi đó như một tập dữ liệu. Dữ liệu này được cài
vào trong máy và được truyền bằng xung điện. Ðây là một cuộc cách mạng mới
cho máy tính nhằm tăng tốc độ tính toán vào thời đó vì trước kia máy chỉ có thể
nhận được các lệnh từ băng giấy hoặc bìa đục lỗ và nạp vào bằng tay. Nếu gặp bài
toán lặp lại nhiều lần thì cũng tiếp tục bằng cách nạp lại một cách thủ công như
vậy gây hạn chế trong tính toán sử dụng.
(ii)Bộ nhớ được địa chỉ hóa
Mỗi dữ liệu đều có một địa chỉ của vùng nhớ chứa số liệu đó. Như vậy để
truy nhập dữ liệu ta chỉ cần xác định địa chỉ của nó trên bộ nhớ.
(iii) Bộ đếm của chương trình
Nếu mỗi câu lệnh phải dùng một vùng nhớ để chứa địa chỉ của câu lệnh tiếp
theo thì không gian bộ nhớ sẽ bị thu hẹp. Ðể khắc phục hạn chế này, máy được gắn
một thanh ghi để chỉ ra vị trí của lệnh tiếp theo cần được thực hiện và nội dung của
nó tự động được tăng lên mỗi lần lệnh được truy cập. Muốn đổi thứ tự lệnh ta chỉ
cần thay đổi nội dung thanh ghi bằng một địa chỉ của lệnh cần được thực hiện tiếp.
4
Bài 2: TỔ CHỨC CỦA MÁY TÍNH
2.1 Kiến trúc chung của máy tính
Kể từ khi ra đời cho đến nay, kiến trúc cơ sở của các máy vi tính ngày nay
không thay đổi nhiều. Mọi máy tính số đều được hình thành từ các thành phần
chính sau: bộ xử lý trung tâm (CPU: Central Processing Unit), bộ nhớ trong, bộ
phận Vào/Ra thông tin. Các bộ phận trên được kết nối với nhau thông qua các hệ
thống Bus. Hệ thống Bus bao gồm: bus địa chỉ, bus dữ liệu và bus điều khiển. Bus
địa chỉ và bus dữ liệu dùng trong việc chuyển dữ liệu giữa các bộ phận trong máy
tính. Bus điều khiển làm cho sự trao đổi thông tin giữa các bộ phận được đồng bộ.
Thông thường người ta phân biệt một bus hệ thống dùng trao đổi thông tin giữa
CPU và bộ nhớ trong (thông qua cache), và một bus Vào/Ra dùng trao đổi thông
tin giữa các bộ phận Vào/Ra và bộ nhớ trong. Một chương trình sẽ được sao chép
từ đĩa cứng vào bộ nhớ trong cùng với các thông tin cần thiết cho chương trình
hoạt động, các thông tin này được nạp vào bộ nhớ trong từ các bộ phận các thiết bị
vào dữ liệu (ví dụ như một bàn phím hay một đĩa từ). Bộ xử lý trung tâm sẽ đọc
các lệnh và dữ liệu từ bộ nhớ, thực hiện các lệnh và lưu các kết quả trở lại bộ nhớ
trong hay cho xuất kết quả ra bộ phận xuất thông tin (màn hình hay máy in).
5
Bộ xử lý
trung
tâm
(CPU)
Bộ nhớ trong
(Memory)
ROM-RAM
Bộ nhớ
ngoài
(Mass store
Unit)
Phối ghép
vào/ra
(I/O)
Thiết bị vào
(Input Unit)
Thiết bị ra
(Output
Unit)
Data Bus
Control Bus
Adrress
Bus
Hình 2.1: Kiến trúc chung của máy tính
Thành phần cơ bản của một máy tính bao gồm :
Bộ nhớ trong: Đây là một tập hợp các ô nhớ, mỗi ô nhớ có một số bit nhất
định và chứa một thông tin được mã hoá thành số nhị phân mà không quan tâm
đến kiểu của dữ liệu mà nó đang chứa. Các thông tin này là các lệnh hay số liệu.
Mỗi ô nhớ của bộ nhớ trong đều có một địa chỉ. Thời gian thâm nhập vào một ô
nhớ bất kỳ trong bộ nhớ là như nhau. Vì vậy, bộ nhớ trong còn được gọi là bộ nhớ
truy cập ngẫu nhiên (RAM - Random Access Memory). Độ dài của một từ máy
tính (computer word) là 32 bit (hay 4 byte), tuy nhiên dung lượng một ô nhớ thông
thường là 8 bit (1 Byte).
Bộ xử lý trung tâm (CPU - Central Processing Unit): Đây là bộ phận thi
hành lệnh của máy tính, CPU lấy lệnh và lấy các số liệu mà lệnh đó xử lý từ bộ
nhớ trong để tiến hành xử lý. Bộ xử lý trung tâm gồm có hai phần: phần thi hành
lệnh và phần điều khiển. Phần thi hành lệnh bao gồm bộ số học và logic (ALU:
Arithmetic And Logic Unit) và các thanh ghi. Nó có nhiệm vụ làm các phép toán
trên số liệu. Phần điều khiển có nhiệm vụ đảm bảo thi hành các lệnh một cách tuần
tự và tác động các mạch chức năng để thi hành các lệnh.
Hình 2.2 : Sơ đồ hoạt động của máy tính PC
6
Bộ phận Vào/ Ra (I/O – Input/Output): đây là bộ phận xuất nhập thông tin,
bộ phận này thực hiện sự giao tiếp giữa máy tính và người dùng hay giữa các máy
tính với môi trường (như là các hệ thống khác trọng mạng máy tính, ). Các bộ
phận Vào/Ra thường gặp là: bộ lưu trữ ngoài, màn hình, máy in, bàn phím, chuột,
máy quét ảnh, các giao diện mạng cục bộ hay mạng diện rộng
Sự khác biệt quan trọng nhất của các hệ máy tính là kích thước và tốc độ. Sự
phát triển không ngừng của các thế hệ máy tính nhờ vào hai yếu tố quan trọng, đó
là sự phát triển của công nghệ chế tạo IC và công nghệ chế tạo bộ nhớ.
2.2 Hoạt động chung của hệ thống máy tính
Các đơn vị chức năng và mối quan hệ của chúng có thể được minh họa bằng
hình 2.3 dưới đây (Các đường vẽ bằng nét đứt chỉ mối quan hệ điều khiển. Các
đường vẽ bằng nét liền là các con đường truyền dữ liệu). Có thể mô tả sự hoạt
động của máy tính một cách khái quát như sau:
Trước hết các chương trình và số liệu ban đầu được đưa vào bộ nhớ trong,
đó thường là bộ nhớ bán dẫn RAM. Khi bắt đầu thi hành chương trình, lệnh đầu
tiên trong tập lệnh đã được tích lũy ở bộ nhớ trong được đưa vào đơn vị điều khiển
- CU.
CU tiến hành giải mã lệnh, nếu việc giải mã cho thấy lệnh cần một hay một
số toán hạng thì nó sẽ xác định xem toán hạng đó nằm ở đâu trong bộ nhớ, việc
này thường được gọi là tính địa chỉ các toán hạng. Toán hạng là thành phần tham
gia phép tính cơ bản. Ví dụ như một phép cộng có thể có hai toán hạng là hai số
hạng tham gia phép cộng. Còn khi cộng một dãy hơn hai số hạng thì phải thực hiện
theo một thuật toán chẵng hạn như công liên tiếp từng số hạng với tổng.
Sau khi tính địa chỉ các toán hạng, CU sẽ phát ra tín hiệu điều khiển tới các
thành phần cần thiết của hệ thống để lấy các toán hạng về, đặt vào các thanh ghi
bên trong đơn vị tính toán ALU. CU phát tín hiệu điều khiển tới ALU để ALU
thực hiện phép toán trên các toán hạng đã lấy về. Kết quả phép toán có thể được để
trong ALU để nó tham gia vào các phép toán tiếp theo hoặc đưa vào bộ nhớ trong.
Điều này tùy thuộc vào mã lệnh mà CU đã nhận vào và giải mã. Nếu CU giải mã
và thấy rằng, mã lệnh cho biết cần tiến hành rẽ nhánh chương trình, nó sẽ tính địa
7
chỉ bộ nhớ của lệnh kế tiếp cần thực hiện và phát ra các tín hiệu điều khiển để lấy
lệnh kế tiếp về, sau đó mọi việc lại diễn ra lặp lại tương tự như quá trình trên trên.
Nếu sau khi giải mã, CU thấy rằng không cần rẽ nhánh chương trình, nó sẽ
phát ra tín hiệu điều khiển để lấy về lệnh ngay sau nó trong bộ nhớ, sau đó mọi
việc lại diễn ra lặp lại tương tự như quá trình trên.
Hình 2.3: Mối quan hệ logic giữa các thành chức năng trong máy tính
Quan hệ giữa bộ nhớ trong và ALU là quan hệ 2 hướng, tức là số liệu sau
khi đã được đưa vào xử lý trong ALU theo đúng ý muốn của người lập chương
trình sẽ lại được đưa ra bộ nhớ trong để sau đó khi có lệnh từ CU số liệu này có thể
được đưa ra thiết bị ra.
Qua mối quan hệ nêu trên ta thấy rằng, CU, ALU và Bộ nhớ trong tham gia
trực tiếp vào quá trình xử lý số liệu, chính vì vậy mà chúng còn được gọi là Đơn vị
xử lý trung tâm - CPU.
Tập hợp các thiết bị vào và thiết bị ra thường được gọi bằng một cái tên
chung là thiết bị ngoại vi (thuật ngữ tiếng Anh là Peripherals, hoặc I/O Devices).
Có những thiết bị trong quá trình hoạt động của máy tính khi thì đóng vai trò của
thiết bị vào, khi thì đóng vai trò của thiết bị ra ví dụ như đĩa cứng, đĩa CD. Thông
8
tin trao đổi giữa bộ nhớ ngoài và hệ thống máy tính luôn thông qua bộ nhớ trong,
dưới sự điều khiển của CU. Bộ nhớ ngoài của các máy tính ngày nay được sử dụng
thường xuyên nên tốc độ hoạt động của chúng có ảnh hưởng nhiều tới tốc độ
chung của hệ thống máy tính.
2.4 Phần cứng và phần mềm
Các chương trình viết bằng ngôn ngữ máy (cấp 1) được thực thi trực tiếp
bằng các mạch điện tử của máy tính, không có trình thông dịch và biên dịch nào
can thiệp vào. Các mạch điện tử cùng với bộ nhớ và các thành phần xuất / nhập tạo
nên phần cứng máy tính. Phần cứng bao gồm các mạch tích hợp, các board mạch
in, cable, nguồn cung cấp, bộ nhớ, thiết bị đầu cuối,… Phần mềm bao gồm các giải
thuật và các biểu diễn của các giải thuật này gọi là chương trình. Nó chính là tập
hợp các lệnh tạo thành một chương trình, chứ không phải là các phương tiện vật lý
lưu trữ chúng. Một dạng trung gian giữa phần mềm và phần cứng gọi là phần dẻo
(firmware). Nó chính là thành phần bao gồm phần mềm được đặt vào bên trong các
mạch điện tử trong quá trình sản xuất. Phần dẻo được dùng khi chương trình không
thay đổi hay hiếm khi phải thay đổi như chương trình điều khiển đặt trong ROM
BIOS. Một thao tác bất kỳ thực thi bằng phần mềm có thể được gắn trực tiếp vào
phần cứng và một lệnh bất kỳ thực thi bằng phần cứng cũng có thể được mô phỏng
bằng phần mềm. Quyết định đặt một số chức năng vào phần mềm và các chức
năng khác vào phần cứng dựa trên các yếu tố giá thành, tốc độ, độ tin cậy. Trên
nhiều máy tính đầu tiên, phần cứng và phần mềm được phân biệt rõ ràng. Phần
cứng thực hiện vài lệnh đơn giản như cộng và nhảy, các thủ tục khác phải do lập
trình viên tự thiết kế. Sau đó, một số thao tác thường xuyên thực thi đòi hỏi các
nhà thiết kế hướng đến yêu cầu xây dựng các mạch điện từ thực thi các thao tác
này. Kết quả là hình thành xu hướng di chuyển các thao tác theo hướng từ cấp cao
xuống cấp thấp hơn. Một số thao tác trước đây được lập trình ở cấp máy quy ước,
sau đó được chuyển xuống thực thi ở phần cứng.
Tuy nhiên, khi xuất hiện thế hệ máy tính dùng vi lập trình và thế hệ máy tính
nhiều cấp, lại xuất hiện xu hướng ngược lại, nghĩa là di chuyển các thao tác từ cấp
thấp lên cấp cao hơn. Ví dụ như lệnh cộng sẽ được thực hiện trực tiếp bằng phần
9
cứng ở các máy trước kia. Đối với máy tính được vi lập trình hóa, lệnh cộng của
cấp máy quy ước được thông dịch bằng một vi chương trình chạy trên cấp thấp
nhất và được thực thi bằng một chuỗi các bước nhỏ: tìm lệnh, nạp lệnh, xác định
lệnh, định vị dữ liệu, tìm và nạp dữ liệu từ bộ nhớ, thực thi phép cộng và lưu trữ
kết quả.
Một số đặc trưng trước đây được lập trình ở cấp máy quy ước, sau đó được
thực hiện bằng phần cứng hay vi chương trình:
- Các lệnh nhân, chia số nguyên.
- Các lệnh xử lý dấu chấm động.
- Các lệnh gọi thủ tục và quay về từ lệnh gọi thủ tục.
- Các lệnh đếm.
- Các lệnh quản lý chuỗi ký tự.
- Các đặc trưng làm tăng tốc độ tính toán chuỗi: định địa chỉ chỉ số và định
địa chỉ gián tiếp.
- Các đặc trưng cho phép chương trình di chuyển trong bộ nhớ sau khi đã
thực thi (cấp phát lại bộ nhớ).
- Các xung clock cho thủ tục định thời.
- Các ngắt báo hiệu cho máy tính.
- Khả năng chuyển đổi quá trình.
Như vậy, ta thấy ranh giới giữa phần cứng và phần mềm là không nhất định
và thường xuyên thay đổi. Theo quan điểm của lập trình viên, cách thức thực thi
một lệnh là không quan trọng, ngoại trừ tốc độ thực thi. Như vậy, phần cứng của
người này có thể là phần mềm của người kia. Từ đó dẫn đến ý tưởng thiết kế máy
tính có cấu trúc (structured computer). Đó là cấu trúc một máy tính thành một
chuỗi các cấp, lập trình viên làm việc trên cấp n không quan tâm đến các cấp khác.
Bài 3: BỘ VI XỬ LÝ CỦA INTEL
Có thể nói, lịch sử phát triển của máy tính PC gắn liền với lịch sử phát triển
của các thế hệ bộ vi xử lý. Bộ vi xử lí trong bản mạch chính là thành phần quan
10
trọng nhất của máy tính của PC. Có hai thuật ngữ dùng để chỉ bộ phận này là: Bộ
vi xử lý (MicroProcessor - MP) hoặc Đơn vị xử lý trung tâm (Central Processing
Unit - CPU). Nó được phát triển trên cơ sở công nghệ chế tạo các mạch vi điện tử
có độ tích hợp rất lớn với các phần tử cơ bản là các transistor trường MOS có độ
tiêu hao công suất rất nhỏ. Trong họ vi xử lý 80x86, chúng thực hiện tất cả các
hoạt động logic và số học. Nói chung, vi xử lí đọc số liệu từ bộ nhớ, xử lí nó theo
cách được xác định bởi lệnh và sau đó ghi kết qủa vào bộ nhớ hoặc thiết bị ngoại
vi.
3.1 Cấu trúc chung của bộ vi xử lý 80286 Intel
Các bộ vi xử lý tiên tiến hiện nay đã đạt đến tốc độ xử lý hàng trăm triệu,
thậm chí hàng tỷ phép tính trong một giây do có mật độ tích hợp vô cùng lớn cộng
với việc áp dụng những giải pháp kỹ thuật nhằm tối ưu hoá hiệu năng tính toán.
Tuy nhiên, cấu trúc chung của các bộ vi xử lý cho đến nay vẫn dựa trên những
nguyên tắc thiết kế cơ bản từ đầu những năm 70 của thế kỷ XX. Intel là hãng đi
đầu trong công nghệ chế tạo bộ vi xử lý và bài này trình bày cấu trúc của bộ vi xử
lý 80286 - bộ vi xử lý được đánh giá là có vai trò đi tiên phong trong việc tiếp cận
với các hệ điều hành đa nhiệm.
Sơ đồ chân tín hiệu của 80286 được thể hiện như hình 3.1. Những đặc trưng
cơ bản của 80286 là:
- Tần số xung nhịp là 16MHz.
- Khả năng địa chỉ hoá được 16MB bộ nhớ vật lý và 1GB nhớ ảo.
- Có hai chế độ hoạt động là chế độ thực và chế độ ảo (chế độ bảo vệ).
- Có khả năng làm việc với bộ đồng xử lý.
11
Hình 3.1: Sơ đồ bố trí chân tín hiệu của 80286
Các tín hiệu của 80286 được phân theo nhóm và được tổ chức thành 3 nhóm
cơ bản:
a. Nhóm tín hiệu địa chỉ:
A
0
– A
23
là 24 chân tín hiệu địa chỉ dùng để địa chỉ hoá cho các bộ nhớ vật lý
và các cổng vào/ra. Dung lượng bộ nhớ tối đa có thể địa chỉ hoá trực tiếp được là
2
24
= 16MB. Khi làm việc với các cổng vào/ra thì các chân địa chỉ A
16
– A
23
được
ghim ở mức logic 0, do đó 80286 có thể quản lý trực tiếp 16K cổng vào/ra.
b. Nhóm tín hiệu dữ liệu:
D
0
– D
15
là 16bit của kênh dữ liệu 2 chiều, ba trạng thái và có mức tích cực
là logic 1.
c. Nhóm tín hiệu điều khiển và đồng bộ:
12
- CLK là tín hiệu xung đồng bộ cho bộ vi xử lý. Tần số vào CLK sẽ được
chia đôi ở bên trong 80286 và tạo thành đồng hồ ngoại vi PCLK. Mỗi CLK được
gọi là 1 pha của 80286.
- Cap là chân gắn tụ lọc nhiễu. Tụ này có giá trị 0,047μF ± 20% có tác dụng
khử nhiễu xung của nguồn nuôi.
- /BHE là tín hiệu cho phép chọn phần cao của kênh dữ liệu. Tín hiệu này
kết hợp với A
0
cho phép cho biết dữ liệu được truyền theo byte hay word:
!"#
$%&'()
- M/IO là tín hiệu dùng để phân biệt bộ nhớ và cổng vào/ra thông tin khi mà
bộ vi xử lý cần quy chiếu chúng, nếu quy chiếu bộ nhớ thì M/IO = 1 còn quy chiếu
cổng vào/ra thì M/IO = 0.
- Các tín hiệu COD/INTA cùng với các tín hiệu M/IO, /S
1
, /S
0
cho phép
phân biệt các chu kỳ máy khác nhau theo bảng sau:
*+,
-*+o
. . /01234 5 6
789:
Cha sö dông
Cha sö dông
Kh«ng lµ chu kú m¸y
A1=1 dõng A1=0 ®ãng
/0123-
/0123-
Khéng lµ chu kú m¸y
Cha sö dông
/0123+
/0123+
Cha sö dông
Cha sö dông
/0123;
Cha sö dông
Kh«ng lµ chu kú m¸y
13
- /READY là tín hiệu sẵn sàng làm việc của thiết bị ngoại vi, đây là tín hiệu
được dùng để hỗ trợ cho hoạt động của CPU khi giao tiếp với thiết bị ngoại vi có
tốc độ chậm.
- INTR là tín hiệu yêu cầu ngắt của ngoại vi, /INTA là tín hiệu trả lời ngắt
của CPU, NMI là tín hiệu ngắt không che được (các tín hiệu này được đề cập chi
tiết trong bài Hoạt động ngắt của máy tính).
- HOLD và HLDA là tín hiệu phục vụ cho chế độ thâm nhập bộ nhớ trực
tiếp DMA (sẽ được đề cập trong bài tổ chức bộ nhớ cho máy tính PC).
- LOCK là tín hiệu cấm các bộ vi xử lý khác (trong chế độ làm việc song
song) dành quyền làm chủ kênh hệ thống. Lệnh LOCK khởi động tín hiệu trên và
nó sẽ trở thành mức tích cực một cách tự động khi thực hiện lệnh XCHG hoặc ở
chu kỳ /INTA hoặc trong thời gian thâm nhập bảng các bộ mô tả.
- PEREQ và /PEACK phục vụ chế độ đối thoại giữa bộ vi xử lý 80286 với
các bộ đồng xử lý ví dụ như bộ đồng xử lý 80287. Tín hiệu PEREQ ở mức logíc 1
là tín hiệu yêu cầu 80286 gửi một toán hạng cho bộ đồng xử lý. Tín hiệu /PEACK
thông báo cho bộ đồng xử lý biết toán hạng mà nó yêu cầu đang được chuyển tới.
- /BUSY và /ERROR là tín hiệu điều khiển cho bộ đồng xử lý. /BUSY
thông báo cho 80286 biết rằng bộ đồng xử lý đang bận. Lúc này bộ vi xử lý 80286
thực hiện các lệnh ESC và WAIT để đợi bộ đồng xử lý. Tín hiệu /ERROR sẽ báo
cho 80286 biết rằng bộ đồng xử lý phát hiện điều kiện ngoại lệ không che được.
- RESET là tín hiệu khởi động có mức tích cực là mức logíc 1. Tín hiệu này
sẽ lập trạng thái ban đầu cho tất cả các thành phần cần thiết của hệ máy tính. Khi
có RESET thì các tín hiệu ra có mức logíc như sau:
Các tín hiệu ra Trạng thái
/S1, /S0, /PEACK, A0-A23 1
/BHE, /LOCK 1
M/IO, CLD/INTA, HLDA 0
D0-D15 Trở kháng cao
Hình 3.2 biểu diễn sơ đồ khối chức năng (bên trong) của bộ vi xử lý 8028:
14
Hình 3.2: Sơ đồ khối cấu trúc của 80286
Bộ vi xử lý 80286 được cấu tạo từ 4 đơn vị có thể làm việc song song (hình
2.2). Đó là các đơn vị: BU (BUS UNIT), IU (INSTRUCTION UNIT), EU
(EXECUTE UNIT) và AU (ADDRESSED UNIT).
Đơn vị BU phát sinh các tín hiệu địa chỉ, dữ liệu và thông tin điều khiển để
thâm nhập vào bộ nhớ hay vào các cổng vào/ra. Nó cho phép thiết lập các quan hệ
với các bộ đồng xử lý hoặc với các bộ xử lý đang làm chủ kênh. Đơn vị này cho
phép quá trình nhận lệnh diễn ra song song với các quá trình khác nhờ có tệp đệm
6 byte. Nó cho phép loại trừ thời gian chết khi nhận lệnh từ bộ nhớ.
Đơn vị lệnh IU nhận lệnh từ tệp đệm, giải mã rồi đưa vào tệp đợi. Tệp đợi
chứa được 3 lệnh.
Đơn vị thực hiện EU sẽ thực hiện lệnh đã được giải mã trong tệp đợi. Nó
liên hệ nới bộ nhớ và cổng vào/ra thông qua đơn vị BU.
Đơn vị địa chỉ AU bảo đảm việc bảo vệ, quản lý bộ nhớ và chuyển địa chỉ
logíc (địa chỉ ảo) thành địa chỉ vật lý (địa chỉ thực) cho đơn vị điều khiển kênh
BU.
Ngoài ra, để hỗ trợ cho các hoạt động của mình, bên trong CPU có một tập
hợp các thanh ghi được chia thành các nhóm theo hình sau:
8086-80286 i386/i486/ Pentium
AX AH AL EAX AH AL
BX BH BL EBX BH BL
CX CH CL ECX CH CL
15
Các
thanh ghi
đa năng
DX DH DL EDX DH DL
BP EBP BP
SI ESI SI
DI EDI DI
SP ESP SP
CS CS
DS DS
SS SS
ES ES
FS
GS
IP EIP IP
Flag EFlag Flag
Hình 3.3 : Các thanh ghi của họ 80x86
Trong đó:
AX (AH, AL): Thanh ghi tích luỹ
CX (CH, CL): Thanh ghi đếm
BP: Thanh ghi con trỏ cơ sở
DI: thanh ghi chỉ số đích
CS: Thanh ghi đoạn mã
SS: Thanh ghi đoạn ngăn xếp
IP: Thanh ghi con trỏ lệnh
BX( BH, BL): Thanh ghi cơ sở
DX (DH, DL): Thanh ghi số liệu
SI: Thanh ghi chỉ số nguồn
SP: Thanh ghi con trỏ ngăn xếp
DS: Thanh ghi đoạn số liệu
ES: Thanh ghi đoạn phụ
F: Thanh ghi cờ.
Có thể liệt kê các nhóm thanh ghi điển hình như sau:
Thanh ghi con trỏ lệnh IP
IP dùng để lưu trữ địa chỉ của lệnh kế tiếp sẽ được chạy trong đoạn chương
trình hiện tại. IP giống như bộ đếm chương trình của các laọi CPU trước. Mỗi lần
một từ lệnh được đọc ra từ bộ nhớ, BIU sẽ thay đổi giá trị của IP sao cho nó đến
địa chỉ của từ lệnh kế tiếp trong bộ nhớ.
Các thanh ghi dữ liệu
- Thanh ghi tích lũy AX, thường được sử dụng để tích luỹ các kết quả tính
toán (cộng, trừ, nhân, chia )
16
Các
thanh
ghi đoạn
-Thanh ghi
con trỏ lệnh
-Thanh ghi cờ
- Thanh ghi cơ sở BX, thường dùng chỉ địa chỉ cơ sở (đáy) của một vùng
nhớ trong bộ nhớ.
- Thanh ghi đếm CX, thường dùng để khai báo số lần một thao tác nào đó
phải được thực hiện trong các vòng lặp, phép dịch, phép quay giá trị của CX tăng
lên môt với một tác động.
- Thanh ghi số liệu DX, thường dùng để lưu trữ dữ liệu dùng làm thông số
chuyển giao cho một chương trình. DX là thanh ghi duy nhất dùng cho việc truy
nhập các địa chỉ vào/ra trên 255 (FFh).
Các thanh ghi con trỏ và chỉ số
- Thanh ghi con trỏ ngăn xếp SP, chứa địa chỉ đỉnh ngăn xếp, Ngăn xếp là
một vùng nhớ đặc biệt, hoạt động liên quan đến các chỉ thị của CPU. Địa chỉ cũng
như kích thước của nó do chương trình ấn định. SP cho phép truy xuất dễ dàng các
địa chỉ trong đoạn ngăn xếp SS. Giá trị trong SP mô tả phần offset của địa chỉ ngăn
xếp kế tiếp, so với địa chỉ hiện tại đang được lưu trong SS.
- Thanh ghi con trỏ cơ sở BP, cũng có chức năng mô tả offset tính từ SS
nhưng còn được sử dụng để truy nhập dữ liệu bên trong ngăn xếp.
- Các thanh ghi chỉ số (index regiters): được dùng để lưu trữ các địa chỉ
offset đối với những lệnh truy nhập dữ liệu được cất trong thanh ghi đoạn dữ liệu.
Do đó chúng luôn liên quan tới các trị số trong thanh ghi đoạn số liệu DS (data
segment). Chúng bao gồm thanh ghi chỉ số nguồn (source index) và thanh ghi chỉ
số đích (destination index).
Các thanh ghi đoạn
Bộ nhớ PC được chia thành các đoạn lôgic dài 64 kbyte một đoạn như sẽ nói
dưới đây. CPU có thể truy nhập một lần tới bốn đoạn. Địa chỉ của đoạn (địa chỉ cơ
sở - địa chỉ bắt đầu thấp nhất của vùng nhớ) chứa trong các thanh ghi đoạn. Có các
thanh ghi đoạn sau:
- Thanh ghi đoạn mã CS (code segment register), dùng để nhận diện địa chỉ
bắt đầu của đoạn chương trình hiện hành trong bộ nhớ.
17
- Thanh ghi đoạn dữ liệu DS (data segment register), dùng để nhận diện địa
chỉ bắt đầu của đoạn số liệu hiệnhành trong bộ nhớ, nghĩa là nơi chứa các biến của
chương trình.
- Thanh ghi đoạn ngăn xếp SS (stack segment register), chứa địa chỉ lôgic là
địa chỉ bắt đầu của ngăn xếp trong bộ nhớ.
- Thanh ghi đoạn mở rộng ES (extra segment register), thường dùng để lưu
trữ dữ liệu các chuỗi (string).
Thanh ghi cờ
Chỉ có chín trong số 16 bit của thanh ghi này được sử dụng. Mỗi cơ hiệu (là
mỗi bit) có thể được đắt (=1) hay xoá (=0) để chỉ thị kết quả của một thao tác trước
đó hoặc trạng thái hiện tại của bộ xử lí. Tuỳ từng loại cụ thể, họ 80x86 có một số
cờ như sau:
- 6 bit mô tả trạng thái (cờ trạng thái)
+ Cờ nhớ CF (carry): được đặt nếu một thao tác phát ra một tín hiệu carry
hoặc borrow cho toán hạng đích. Thí dụ, khi kết quả của phép lấy tổng hai toán
hạng 8 bit quá 225 (= 2
8
-1). Cờ này có thể được đặt bởi lệnh STC (set carry), được
xoá bởi lệnh CLC (clear carry) hoặc cộng thêm 1 bởi lệnh CMC (complement
carry).
+ Cờ chẵn lẻ PF (parity): được đặt nếu kết quả của một phép toán có chứa số
bit được đặt (=1).
+ Cờ mang phụ AF (auxiliary carry): được dùng cho mã BCD và được đặt
nếu thao tác phát ra mộ tín hiệu carry hoặc borrow cho 4 bit thấp của toán hạng.
+ Cờ zê - rô ZF (zero): được đặt nếu kết quả của phép toán bằng không (=0)
+ Cờ đấu SF (sign): đấu tương ứng với bit nhiều ý nghĩa nhất của kết quả
phép toán được đặt (0 = kết quả đương, 1 = kết quả âm).
+ Cờ tràn OF (overflow): được đặt nếu kết quả của phép toán quá lớn hoặc
quá nhỏ cho toán hạng đích.
- 3 bit cờ điều khiển:
18
+ Cờ báo hướng DF (direction): xác định hướng của phép toán xử lí chuỗi.
Nếu hướng được đặt, chuỗi sẽ được xử lí từ địa chỉ cao tới địa chỉ thấp và ngược
lại. Cờ này có thể được đặt bởi lệnh STD và được xoá bởi lệnh CLD.
+ Cờ ngắt IF (interrup enable): nếu được đặt, CPU sẽ chấp nhận một yêu cầu
ngắt cứng IRQs và phục vụ ngắt. Cờ này có thể được đặt bởi lệnh STI và được xoá
bởi lệnh CLI.
+ Cờ bước TF (trap): nếu được đặt, CPU sẽ phát ra ngắt số 1 sau mỗi bước
chương trình dùng cho việc gỡ rối (debug). Trong trường hợp này, chương trình
được chạy từng bước một. Cờ này có thể không được đặt hay xoá trực tiếp bởi lệnh
máy mà phải dùng với sự phụ trợ của ngăn xếp.
3.2 Hoạt động của bộ vi xử lý 80286
Một phương án kết nối bộ vi xử lý 80286 trong máy tính PC được chỉ ra ở
hình 3.3. Ta sẽ mô tả 2 hoạt động điển hình của nó là hoạt động đọc/ghi thông tin
và hoạt động quản lý bộ nhớ.
19
CPU
80286
Clock
82284
Address Buffer
74LS244
Data Buffer
74LS245
Bus Controller
82288
Address
Multiplexer
74LS158
Memory
Buffer
74LS245
Memory
Controller
Main
Memory
Synchr
READY
CLK
CLK
Asynchronous READY
Hình 3.3: Sơ đồ ghép nối CPU với các vi mạch bổ trợ
Ghi chú:
82284: vi mạch phát xung nhịp đồng hồ 8284
asynchronous READY: tín hiệu READY không
đồng bộ
Sychr, READY: tín hiệu READY đồng bộ
Address Buffer: đệm địa chỉ
Data Buffer: đệm số liệu:
Ports: các cổng
Bus Controller: bộ điều khiển
bus
3.2.1 Hoạt động đọc/ghi thông tin:
Chu kỳ máy đọc thông tin có thể chia làm 6 pha: A, B, C, D, E, F.
Tại pha A (φ2 của Tc thuộc chu kỳ trước) bộ vi xử lý 80286 đưa ra kênh tín
hiệu địa chỉ A23- A0 và các tín hiệu M/IO, COD/INTA để thông báo là chu kỳ
máy quy chiếu bộ nhớ hay quy chiếu cổng vào/ra.
Tại pha B (φ1 của Ts thuộc chu kỳ đọc) tín hiệu /S1/S0= 01 chỉ ra mã của
chu kỳ máy đọc. ở pha này tín hiệu /BHE cũng có hiệu lực, nếu sử dụng 8 bít cao
của kênh dữ liệu D15-D8.
Pha C (φ2 của Ts thuộc chu kỳ đọc) sẽ đưa tín hiệu ALE ra để chốt các tín
hiệu địa chỉ vào mạch 74533 (74373).
Tại pha D (φ1 của Tc thuộc chu kỳ đọc) các tín hiệu /MRDC và DT/R được
đưa về mức tích cực âm. Tín hiệu DEN được đưa về mức tích cực để chọn các
mạch truyền dữ liệu. Các tín hiệu trạng thái /S0/S1 chuẩn bị cho chu kỳ tiếp theo.
Tại pha E (φ2 của Tc thuộc chu kỳ đọc) các tín hiệu M/IO và COD/INTA
được thiết lập cho chu kỳ máy tiếp theo. Nếu chu kỳ mới là chu kỳ trả lời ngắt hay
chu kỳ treo kênh thì các tín hiệu này ở phần trạng thái trở kháng cao.
Cuối pha E, bộ vi xử lý 80286 kiểm tra tín hiệu /READY. Nếu /READY= 0
thì chu kỳ máy đọc thông tin sẽ kết thúc. Dữ liệu đã sẵn sàng trên kênh dữ liệu và
bộ vi xử lý 80286 đọc dữ liệu này. Nếu /READY= 1, bộ vi xử lý 80286 đưa ra một
trạng thái Tc nữa và cứ như thế đến khi /READY= 0.
20
Tại pha F (φ1 của Ts của chu kỳ tiếp theo) chu kỳ đọc kết thúc, các tín hiệu
DEN, /MRDC, DT/R trở về trạng thái không tích cực. Mạch 82284 đưa tín hiệu
/READY về mức cao.
Chu kỳ ghi thông tin của 80286 bao gồm các pha A, B, C, D, E, F và G.
Tại pha A (φ2 của Tc của chu kỳ trước) bộ vi xử lý 80286 đưa ra kênh địa
chỉ A23-A0, các tín hiệu M/IO và COD/INTA. Quá trình giải mã địa chỉ có thể bắt
đầu.
Tại pha B (φ1 của Ts thuộc chu kỳ đang thực hiện) các tín hiệu /S1/S0= 00
chỉ ra rằng chu kỳ máy ghi thông tin đang được thực hiện. Tín hiệu sẽ có giá trị 0
hay 1 tuỳ theo các đường dữ liệu là 8 bít cao hay không.
Tại pha C (φ2 của Ts thuộc chu kỳ đang thực hiện) bộ vi xử lý 80286 truyền
dữ liệu ra kênh. Tín hiệu ALE chốt địa chỉ còn DEN chọn các mạch truyền dữ liệu.
Vì dữ liệu đi từ kênh cục bộ sang kênh hệ thống nên tín hiệu DT/R= 1.
Tại pha D (φ1 của Tc thuộc chu kỳ đang thực hiện), 80286 đưa các tín
hiệu /S1/S0 về logíc 1, ALE về lôgíc 0 còn tín hiệu /MWTE có hiệu lực.
Tại pha E (φ2 của Tc thuộc chu kỳ đang thực hiện) các tín hiệu địa chỉ,
M/IO và COD/INTA của chu kỳ tiếp theo được đưa ra giải mã. Như vậy, chu kỳ
máy mới đang được tiến hành ngay khi chu kỳ máy cũ còn đang thực hiện để hoàn
tất lệnh. Cuối pha E tín hiệu /READY được trích mẫu, nếu /READY= 0, chu kỳ
ghi thông tin sẽ kết thúc, ngược lại thì một trạng thái Tc sẽ lại bắt đầu và cứ tiếp
tục cho đến khi /READY= 0.
Tại pha F (φ1 của Ts thuộc chu kỳ tiếp theo) các tín hiệu /MWTC và
/READY được đưa về mức không tích cực.
Tại pha G (φ2 của Ts thuộc chu kỳ tiếp theo) dữ liệu được đưa vào bộ nhớ,
tín hiệu DEN trở về mức thụ động và do đó kênh dữ liệu được giải phóng.
3.2.2 Hoạt động quản lý bộ nhớ thực:
Không gian nhớ trong chế độ địa chỉ thực là không gian nhớ mà bộ vi xử lý
có thể quản lý trực tiếp bằng giá trị con trỏ do cặp thanh ghi mảng và thanh ghi
OFFSET quy định (SEG : OFFSET). Không gian nhớ cực đại sẽ phụ thuộc vào số
bit của kênh địa chỉ mà bộ vi xử lý dành cho chế độ này. Thí dụ, bộ vi xử lý 80286
21
sử dụng 20 bit địa chỉ A19-A0 dành cho chế độ địa chỉ thực thì không gian nhớ
cực đại sẽ bằng 220 byte tức bằng 1MB. Nếu hệ vi xử lý có IC nhớ (ROM, RAM)
nằm ra ngoài không gian này thì bộ vi xử lý 80286 không thể quản lý được.
Trong quá trình hoạt động, khối quản lý bộ nhớ của bộ vi xử lý 80286 cho
phép chuyển các giá trị con trỏ do cặp thanh ghi mảng và thanh ghi OFFSET thành
những địa chỉ thực và đưa ra kênh hệ thống để kích hoạt các đối tượng tương ứng
như bộ nhớ trung tâm hay các cổng vào/ra.
Hình 3.4: Cơ chế tính địa chỉ vật lý từ địa chỉ logic
Để chuyển địa chỉ logic (SEG:OFFSET) 32 bit bên trong thành địa chỉ vật lý
20 bit (A
19
– A
0
) trên kênh địa chỉ, AU sẽ thực hiện dịch trái SEG đi 4 bit rồi cộng
với giá trị của OFFSET.
Trong chế độ thực, bộ vi xử lý 80286 có 6 phương pháp địa chỉ hoá:
♦ Địa chỉ trực tiếp cho phép thâm nhập trực tiếp vào toán hạng có địa chỉ là giá trị của
SEG:OFFSET.
♦ Địa chỉ gián tiếp cho phép thâm nhập trực tiếp vào toán hạng có địa chỉ là giá trị của
SEG:(SI hoặc DI hoặc BX).
♦ Địa chỉ tương đối cho bởi giá trị của OFFSET cho phép thâm nhập vào toán hạng có
địa chỉ là giá trị của tổng giá trị dịch chuyển chứa trong lệnh và nội dung của các thanh ghi cơ sở
BX và BP.OFFSET= (BX hay BP) + Dịch chuyển.
22
♦ Địa chỉ hoá theo chỉ số cho bởi OFFSET cho phép thâm nhập vào toán hạng có địa
chỉ là giá trị của tổng giá trị dịch chuuyển chứa trong lệnh và nội dung của thanh ghi SI hay DI.
OFFSET= (SI hay DI) + Dịch chuyển
♦ Địa chỉ tương đối theo chỉ số cho bởi OFFSET cho phép thâm nhập vào toán hạng có
địa chỉ là giá trị của tổng nội dung thanh ghi cơ sở và nội dung thanh ghi chỉ số.
OFFSET= (BX hay BP) + (SI hay DI)
Khi ta có một vùng dữ liệu động và muốn làm việc với các phần tử của vùng thì chế độ
địa chỉ này là thích hợp. Thanh ghi cơ sở phục vụ chọn vùng, còn thanh ghi chỉ số trỏ đến bên
trong của vùng xác định.
♦ Địa chỉ tương đối theo chỉ số và giá trị dịch chuyển cho bởi OFFSET cho phép thâm
nhập đến toán hạng có địa chỉ là giá trị là tổng nội duing của thanh ghi cơ sở, nội dung của thanh
ghi chỉ số và giá trị dịch chuyển chứa trong lệnh.
OFFSET= (BX hay BP) + (SI hay DI) + dịch chuyển
Nhờ có thanh ghi cơ sở, chế độ địa chỉ này cho phép lặp lại một cấu trúc mà ở trong đó
có các vùng dữ liệu cần tìm. Chỉ số cho phép chọn phần tử xác định bên trong vùng dữ liệu này.
3.2.3 Hoạt động quản lý bộ nhớ ảo:
Không gian nhớ trong chế độ địa chỉ ảo là không gian nhớ mà bộ vi xử lý có
thể quản lý vượt dung lượng không gian nhớ thực rất nhiều. Khả năng này có được
là do tổ chức phần cứng bên trong của bộ vi xử lý được cài cấy một cơ cấu đặc biệt
đó là phần ẩn của các thanh ghi quản lý.
Hình 3.5: Mô tả mảng nhớ trong chế độ ảo
23
Khối quản lý bộ nhớ của bộ vi xử lý 80286 cho phép chuyển các giá trị địa
chỉ ảo (hay còn gọi là địa chỉ lôgíc) thành những địa chỉ thực cho bộ nhớ trung
tâm.
Nguyên tắc cơ bản của chế độ địa chỉ ảo là phương thức tạo mảng nhớ. Một
mảng nhớ được định nghĩa như là một tập hợp các ngăn nhớ liên tiếp có dung
lượng không quá 64 KB và mảng này có thể trao đổi giữa bộ nhớ trung tâm và bộ
nhớ ngoài.
Mỗi mảng nhớ được xác định từ ba tham số: địa chỉ cơ sở, kích thước mảng
dung lượng của mảng nhớ) và đặc quyền thâm nhập. Mỗi mảng nhớ có cấu trúc
như được biểu diễn trên hình 3.5.
Nhiệm vụ trong phương thức quản lý địa chỉ ảo được hiểu là việc thực hiện
một tập hợp các tiến trình gắn với một trạng thái xác định của bộ vi xử lý.
Không gian nhớ luôn luôn gắn với nhiệm vụ. Không gian nhớ được dành
riêng cho một nhiệm vụ gọi là không gian nhớ cục bộ. Không gian nhớ mà tất cả
các nhiệm vụ đều có thể thâm nhập tới gọi là không gian nhớ toàn cục.
Hình 3.6: Tổ chức không gian nhớ dành cho các nhiệm vụ
Một địa chỉ trong chương trình chạy trên vi xử lý 80286 gồm có hai thành
phần: bộ chọn mảng 16 bít và OFFSET 16 bít. 32 bít địa chỉ này có ý nghĩa khác
nhau khi 80286 làm việc ở chế độ thực và chế độ bảo vệ. Trong chế độ thực, bộ
chọn mảng biểu diễn các bít cao của địa chỉ cơ sở của mảng nhớ. Trong chế độ bảo
vệ bộ chọn mảng có ý nghĩa như sau: hai bít thấp dùng để thể hiện mức đặc quyền
24
của các yêu cầu RPL (Reqested Privelege level); bít TI (Table Indicator) được sử
dụng để xác định không gian nhớ. Nếu TI= 0, không gian nhớ là không gian toàn
cục còn nếu TI= 1 thì không gian nhớ là không gian cục bộ. Mười ba bít cao của
bộ chọn mảng dành cho chỉ số nên nó xác định được 213= 8192 mảng nhớ trong
không gian nhớ toàn cục và 8192 mảng nhớ trong không gian nhớ cục bộ. Như vậy
bộ chọn mảng địa chỉ hoá được cho 16384 mảng nhớ khác nhau.
Dung lượng lớn nhất của một mảng nhớ là 64 KB nên không gian nhớ ảo
dành cho một nhiệm vụ có dung lượng cực đại là 2
14
.2
16
= 2
30
= 1GB. Lưu ý là dung
lượng bộ nhớ ở chế độ thực chỉ là 2
4
.2
16
= 2
20
= 1MB.
Hình 3.7: Con trỏ địa chỉ ảo
Chỉ số giữ vai trò con trỏ đến bảng các bộ mô tả. Bảng này thiết lập quan hệ
giữa 32 bít địa chỉ ảo và 24 bít địa chỉ thực của bộ vi xử lý. Bộ vi xử lý quản lý hai
loại bảng các bộ mô tả là GDT (Global Descriptor table) tức là bảng các bộ mô tả
không gian nhớ toàn cục và bảng các bộ mô tả không gian nhớ cục bộ LDT (Local
Deseriptor table). Các bộ mô tả của 80286 bao gồm: bộ mô tả mảng dữ liệu, bộ mô
tả mảng lệnh, bộ mô tả mảng hệ thống và bộ mô tả mảng các cổng giao tiếp.
25