1. Trang chủ
  2. » Cao đẳng - Đại học

GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH

108 5K 8
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo Trình Kiến Trúc Máy Tính
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Kiến Trúc Máy Tính
Thể loại Giáo trình
Định dạng
Số trang 108
Dung lượng 2,66 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH

Trang 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 Proccessing Unit) 18

1.4.1 Cấu hình bên ngoài 18

1.4.2 Cấu hình bên trong 21

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 24

1.4.5 Quản lý bộ nhớ trong chế độ bảo vệ 27

1.4.6 Cơ chế đa nhiệm 35

1.4.7 Các chế độ xác định địa chỉ toán hạng 36

1.5 Kỹ thuật đường ống và kỹ thuật xử lý song song mức lệnh 40

1.5.1 Kỹ thuật xử lý lệnh kiểu đường ống (Pipeline) 41

1.5.2 Kỹ thuật ILP (xử lý song song mức lệnh) 42

Chương 2 43

Tổ chức bộ nhớ trong máy vi tính PC 43

2.1 Tổ chức bộ nhớ theo phân cấp 43

2.2 Tổ chức cache 45

2.2.1 Trường hợp mỗi khối chứa một từ (hoặc 1 byte) dữ liệu 45

2.2.2 Trường hợp mỗi khối chứa nhiều từ dữ liệu 47

2.2.3 Kỹ thuật tập liên hợp 47

2.3 Tổ chức bộ nhớ máy vi tính PC 48

2.3.1 Cơ chế quản lý bộ nhớ theo phân trang 48

2.3.2 Cơ chế truy nhập bộ nhớ theo trang 50

Chương 3 52

Các phương pháp vào ra dữ liệu trong máy vi tính 52

3.1 Cấu trúc phần cứng của hệ thống vào/ra dữ liệu 52

3.2 Các phương pháp vào/ra dữ liệu 52

3.2.1 Phân loại 52

3.2.2 Phương pháp vào/ra dữ liệu theo định trình 53

3.2.3 Phương pháp vào/ra dữ liệu theo kiểu thăm dò 54

3.2.4 Phương pháp vào/ra dữ liệu theo ngắt cứng 55

3.2.5 Phương pháp vào/ra dữ liệu theo kiểu DMA (truy nhập trực tiếp bộ nhớ - Direct Memory Access) 57

Chương 4 59

Các thiết bị vào ra 59

4.1 Các thiết bị giao diện và điều khiển vào/ra dữ liệu 59

4.1.1 Ngắt và bộ điều khiển ngắt PIC 8259 59

4.1.2 Truy nhập trực tiếp bộ nhớ và bộ điều khiển DMAC 8237 68

4.1.3 Vào-ra nối tiếp và thiết bị giao diện vào-ra nối tiếp UART 8250/16450 75

Trang 2

4.1.4 Thiết bị giao diện song song 83

4.2 Các thiết bị ngoại vi 86

4.2.1 Bàn phím 86

4.2.2 Màn hình 90

4.2.3 Đĩa từ 93

Trang 3

Chương1 Kiến trúc máy vi tính PC và đơn vị xử lý trung tâm

1.1 Các thành phần cơ bản của máy tính số

Trong lịch sử, máy tính điện tử được phát triển theo 2 hướng kỹ thuật tách biệt, từ đó sinh ra 2 loại máy tính là Máy tính tương tự (analog computer) và máy tính số (digital computer) Máy tính tương tự hoạt động trên các loại số liệu liên tục với các mạch điện tử tương tự, còn máy tính số hoạt động trên các loại số liệu rời rạc với các mạch điện tử số Hiện nay các máy tính số chiếm

ưu thế vượt trội nên khi nói đến máy tính người ta cũng thường hiểu ngầm là máy tính số

Máy tính số gồm các khối chức năng chính như sau:

- Đơn vị xử lý trung tâm (CPU): được chế tạo bởi một mạch vi điện tử có độ tích hợp rất cao, nó

có nhiệm vụ đọc mã lệnh là các bit thông tin 0 hoặc 1 từ bộ nhớ chính, giải mã các lệnh này thành một chuỗi các xung điều khiển để điều khiển các khối khác thực hiện từng bước các thao tác trong lệnh Để làm được điều này bên trong vi xử lí có các thanh ghi (registers) để chứa địa chỉ của các lệnh sắp thực hiện (lệnh kế tiếp) như thanh ghi con trỏ lệnh IP (Instruction Pointer) hay còn gọi là bộ đếm chương trình PC (Program Counter) và các thanh ghi khác dùng để lưu trữ

dữ liệu tạm thời hoặc các trạng thái của hệ thống Các thanh ghi này cùng 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 Trong vi

xử lí thì đơn vị điều khiển CU (Control Unit) là phần phức tạp nhất vì nó có chức năng giải mã lệnh và tạo các xung điều khiển toàn hệ thống CPU thực hiện các chức năng chính sau:

- Đ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 (RAM+ROM): Được tạo bởi các vi mạch nhớ bán dẫn có tốc độ truy cập nhanh

nhưng dung lượng hạn chế, nằm trên bản mạch chính được chia thành các ô nhớ và mỗi ô nhớ có một địa chỉ duy nhất xác định Địa chỉ của các ô nhớ (xác định vị trí của ô đó trong bộ nhớ) bắt đầu từ 0 và tăng dần, mỗi ô nhớ dài 1 byte

ROM : ROM là bộ nhớ chỉ đọc Dữ liệu trong ROM được duy trì ngay cả khi không có

Trang 4

nguồn điện nuôi ROM chứa các chương trình kiểm tra hệ thống, chương trình xác lập cấu hình hệ thống, chương trình đọc cung đĩa khởi động, các chương trình điều khiển các thiết bị vào-ra cơ bản của máy tính (BIOS-Basic Input/Output/Output System)

RAM: RAM là bộ nhớ thao tác Bộ nhớ RAM có chức năng chứa các phần mềm của hệ thống (hệ

điều hành), phần mềm và dữ liệu của một hoặc nhiều chương trình đang hoạt động (chương trình ứng dụng) Nội dung RAM sẽ bị xóa khi mất điện

Ngoài ra còn có:

+ Bộ nhớ khối (bộ nhớ ngoài): Lưu giữ tài nguyên phần mềm của máy tính bao gồm: HĐH, các chương trình và các dữ liệu Bộ nhớ ngoài được kết nối với hệ thống dưới dạng các thiết bị vào/ra Nó có dung lượng lớn nhưng tốc độ truy cập chậm Các loại bộ nhớ ngoài như: Đĩa cứng, đĩa mềm,…

+ Bộ nhớ cache: Là thành phần nhớ tốc độ nhanh được đặt đệm giữa CPU và bộ nhớ chính nhằm tăng tốc độ truy cập bộ nhớ của CPU Dung lượng nhỏ hơn bộ nhớ chính Nó được sử dụng để lưu trữ các lệnh và dữ liệu thường được sử dụng nhiều trong quá trình thực hiện chương trình (bộ nhớ này có thể có hoặc ko có)

-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 thông tin được với các thiết bị ngoại vi như bàn phím, màn hình, ổ đĩa từ, chuột,…Các mạch điện tử này gọi là các cổng vào/ra (I/O port) Tùy theo yêu cầu mà chúng có chức năng hoặc là cổng vào nếu cho phép CPU nhận thông tin từ ngoài hoặc là cổng ra nếu cho phép CPU xuất thông tin ra ngoài hoặc cả hai

Sự có mặt của thiết bị giao diện là do có sự khác biệt rất lớn về dạng 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 Bên trong máy tính con số được

sử dụng làm phương tiện truyền tải thông tin, thế giới bên ngoài máy tính thông tin được truyền tải dưới dạng ký tự, ánh sáng, âm thanh, Đơn vị xử lý trung tâm xử lý thông tin với tốc độ rất cao, các thiết bị bên ngoài máy tính xử lý thông tin với tốc độ chậm hơn nhiều

- Hệ thống bus:

Các khối cơ bản của máy tính được kết nối với nhau qua một tập đường dây truyền tín hiệu gọi là bus hệ thống: Là đường truyền thông tin trong máy tính.Về mặt vật lý Bus là tập hợp của các đường dây truyền tín hiệu điện, mỗi một đường dây truyền được một bit thông tin tại một thời điểm Đơn vị xử lý trung tâm CPU thực hiện 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 gồm 3 bus thành phần là:

+ 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

Trang 5

+ Bus điều khiển(2 chiều): Do CPU hay thiết bị khác phát ra để điều khiển quá trình trao đổi dữ liệu như tín hiệu để phân biệt đơn vị được CPU truy nhập là thuộc bộ nhớ hay thiết bị vào/ra, thao tác truy nhập là đọc hay viết,…

Để người sử dụng có thể làm việc được trên máy tính (như viết và cho chạy các chương trình ứng dụng của riêng họ) thì chỉ với các bộ phận phần cứng trên là không đủ, một phần mềm gọi là HĐH phải được cài đặt sẵn trong máy tính Đó là 1 tập hợp các chương trình để sử dụng các chức năng cơ bản của các bộ phận phần cứng hay phần mềm trên hệ thống máy tính Khác với chương trình ứng dụng, HĐH là một chương trình hệ thống đặc biệt chạy trong suốt thời gian hoạt động của máy tính Thực ra nó là một tập hợp các chương trình lo việc điều khiển hoạt động của máy tính cũng như cho phép các chương trình phần mềm khác chạy được Nó điều khiển máy tính quyết định cho các chương trình nào chạy trong khoảng thời gian nào, quyết định nguồn tài nguyên nào (bộ nhớ, thiết bị vào/ra,…) đang được sử dụng,

Trong các lĩnh vực khoa học và đời sống, máy tính số có thể dùng trong lĩnh vực xử lý dữ liệu, sử dụng trong đo lường và điều khiển tự động hay được dùng như một bộ xử lí số…

1.2 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 ta thường dùng hệ đếm cơ số mười hay hệ thập phân là tổ hợp các chữ

số từ 0 tới 9 để biểu diễn giá trị các số Còn trong máy tính số thì hệ đếm nhị phân được sử dụng

để biểu diễn giá trị các số Bởi vì máy tính số được xây dựng trên cơ sở các mạch điện, mà các mạch điện ở từng thời điểm chỉ ở một trong hai trạng thái đóng hoặc mở; có hoặc không có dòng điện trong mạch; điện áp cao hoặc điện áp thấp Trong hệ nhị phân thì bit (là số 0 hoặc 1) là đơn

vị nhỏ nhất biểu diễn dữ liệu (đơn vị nhỏ nhất mang 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*bn+an-1*bn-1+…+a1*b1+a0*b0+a-1*b-1+a-2*b-2 +…+a-(m-1)*b (m-1)+a-m*b-m

-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ố

Khi cần phân biệt rõ hệ đếm thường viết thêm chỉ số dưới ký hiệu cơ số vào các số Ví dụ số 65 trong hệ thập phân được viết là 6510, trong hệ nhị phân được viết là 1001022

Trang 6

Trong đó :

2 - cơ số ;

2-1, 20, 21, 22, 23 ,24, 25, 26– các trọng số

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à :

Hệ mười (decimal) b=10 a={0,1,2,3,4,5,6,7,8,9}

Hệ nhị phân (binary) b=2 a={0,1}

Hệ tám (octal) b=8 a={0,1,2,3,4,5,6,7}

Hệ mười sáu (hexaldecimal) b=16 a={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

Giữa các hệ đếm thường xuyên phải có sự chuyển đổi qua lại :

+ Đổi số thập phân sang các số có hệ cơ số r được thực hiện bằng cách tách số đó thành 2 phần : Phần nguyên và phần phân số để biến đổi riêng rẽ Sự biến đổi phần nguyên được thực hiện bằng cách chia liên tiếp cho r và tích lũy các số dư lại Biến đổi phần phân số được thực hiện bằng cách nhân liên tiếp với r và tích lũy các số nguyên nhận được Ví dụ dưới đây là quá trình biến đổi số thập phân sang số nhị phân :

Đổi 23.37510 sang nhị phân Chúng ta sẽ chuyển đổi phần nguyên dùng phương thức số

dư :

KQ : 23.37510 = 10111.0112

Tuy nhiên, trong việc biến đổi phần lẻ của một số thập phân sang số nhị phân theo phương thức nhân, có một số trường hợp việc biến đổi số lặp lại vô hạn như:

Trang 7

+ Đổ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

Ví d ụ:

+ Chuyển đổi giữa các số nhị phân và số hệ thập lục: Một nhóm số nhị phân 4 bit vừa đủ

biểu diễn một chữ số trong hệ mười sáu nên ta sẽ nhóm số nhị phân cần chuyển đổi thành các nhóm 4bit và đổi mỗi nhóm đó ra 1 chữ số mười sáu:

+ Giữa hệ thập phân và nhị phân tồn tại một hệ lai BCD (binary coded decimal): Hệ này

mã hóa mỗi con số trong hệ thập phân bằng một só nhị phân Thường dùng một số nhị phân 4 bit

để mã hóa cho các chữ số từ 0 đến 9 Như vậy không dùng hết các tổ hợp có thể có của 4bit (24=16)

Ví dụ: Số 52010 nếu biểu diễn theo số BCD sẽ là:

Trang 8

biểu diễn của 2 trong hệ nhị phân là 2 = 1*21 + 0*20 = 10 nên kết quả chính là 0

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)

- Nhân hai số nhị phân: Phép tính nhân trong hệ nhị phân cũng tương tự như phương

pháp làm trong hệ thập phân Hai số A và B được nhân với nhau bởi những tích số của các kí số

0 và 1 của A và B: với mỗi con số ở B, tích của nó với một con số trong A được tính và viết xuống một hàng mới, mỗi hàng mới phải chuyển dịch vị trí sang bên trái 1 bit Tổng của các tích cục bộ này cho ta kết quả tích số cuối cùng

Nguyên tắc: 0 * 0 = 0 ; 1 * 0 = 0; 0 * 1 = 0; 1 * 1 = 1

Ví dụ: 9 x 6 = 54 (1001 x 110 = 110110)

Trang 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

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ố cũng như các mã trong máy vi tính đều được biểu diễn bằng các chữ số nhị phân

Để biểu diễn các số nguyên không dấu, người ta dùng n bit Tương ứng với độ dài của số bit được sử dụng, ta có các khoảng giá trị xác định như sau:

S ố bit Kho ảng giá trị

n bit: 0 2 n - 1

8 bit (Byte) 0255

16 bit(Word) 065535

Trang 10

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 dùng bit tận cùng bên trái làm bit dấu : bit bằng 0 biểu diễn cho dấu (+)

và bằng 1 cho dấu (-) Một cách tổng quát ta có

S ố bit Kho ảng giá trị

S ố bù 2 của một số nhị phân được tạo ra bằng cách lấy 1 trừ mỗi chữ số 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 tạo số bù 2 của một số trên thực tế đuợc thực hiện bằng cách đổi số 0 thành số 1, đổi số 1 thành số 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

Ví d ụ : Số bù 2 của -25

10 = 11100111

2 -6510=1011 1111 Với hệ thống bù 2 các phép tính cộng và trừ hai số nhị phân được thực hiện qua chỉ một phép tính cộng Trong hệ thống bù 2 khi thực hiện cộng hai số có thể có bốn tình huống xảy ra:

+ 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, một số là âm và số âm có trị tuyệt đối nhỏ hơn Bù 2 của số âm được

tạo 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 :

Trang 11

+ Một số là dương, một số là âm và số âm có trị tuyệt đối lớn hơn

Khi thực hiện phép cộng, không có nhớ từ bit dấu Kết quả là một số âm ở dạng bù 2 Cần

bỏ bit dấu ở kết quả và phải tạo số bù 2 với số đó để nhận được kết quả thật

Ví dụ cộng hai số khác dấu 4 bit :

+ C ả hai số là âm : Khi thực hiện phép cộng, có nhớ được tạo ra từ bit dấu Cần bỏ bit nhớ và

kết quả là một số âm ở dạng bù 2 Phải bỏ bit dấu và tạo số bù 2 với số đó để nhận được kết quả thật

Ví dụ cộng hai số âm 4 bit :

4 Biểu diễn số thực trong máy tính

Trong các hệ đếm để mô tả các giá trị có phần nhỏ hơn 1 người ta dùng 1 dấu “.” (theo tiếng Anh) hay dấu “,” (theo tiếng Việt) để phân cách 2 phần: Phần nguyên và phần phân số Vì vậy trong mục này ta sẽ gọi số có dấu phảy là số có dấu chấm

Có 2 cách biểu diễn một số thực trong hệ nhị phân : Số có dấu chấm cố định (fixed point number) và

số có dấu chấm động (floating point number)

4.1 Biểu diễn số có dấu chấm cố định

Tương tự như cách biểu diễn 1 số thực thông thường của hệ thập phân gồm 2 phần : Phần nguyên và phần sau dấu chấm Công thức như sau :

an-1an-2….b1b2…bm-1bm=an-1*En-1+an-2*En-2+…+a1*E1+a0*E0+b1*E-1+b2*E-2 +…+bm-1*E(m-1)+bm*E-m

-VD : 111.11=2*2-2 + 2*2-1 + 2*20 + 2*21 + 2*22

4.2 Biểu diễn số có dấu chấm động

Khi cần biểu diễn và xử lí những phân số và những số rất dài, thí dụ các số bao gồm rất nhiều con số 0 mà chỉ có một ít con số có ý nghĩa như hai số sau :

Khối lượng mặt trời : 199000000000000000000000000000000000g

Trang 12

Khối lượng điện tử : 0.000000000000000000000000000000910956g

Khi này máy tính sẽ phải dùng đến một số lớn byte nhớ để lưu trữ các con số 0 như vậy Như đã biết rằng 1 byte biểu diễn được 256 số (từ 0 tới 255) thì để biểu diễn một số trong dải rất rộng từ lớn đến nhỏ như vậy cần đến cỡ 14 byte cho phần nguyên và 12 byte cho phần thập phân

Rõ ràng trong trường hợp này dùng loại số có dấu chấm tĩnh sẽ rất bất tiện Máy tính số thường biểu diễn và lưu trữ những số trên trong dạng dấu chấm động như sau : 1.99*1033g và 0.910956*10-27g hay theo cách viết khoa học là 1.99E33g và 0.910956E-27g Tổng quát lên thì một số dấu chấm động sẽ có dạng là:

+ Dạng đơn giản : Số dấu chấm động được lưu trữ dưới dạng dữ liệu 32bit :

Dữ liệu này biểu diễn giá trị : V=(-1)S*2E-127*1.F

V : giá trị của số dấu chấm động

S : bit dấu

E : Số nguyên nhị phân

F : Phần sau dấu chấm nhị phân (dạng mã nhị phân) Phần định trị có dạng 1.F + Dạng độ chính xác gấp đôi : Giá trị dấu chấm động độ chính xác gấp đôi được lưu trữ dưới dạng dữ liệu 64bit :

Dữ liệu này biểu diễn giá trị :

V=(-1)S*2E-1023*1.F Phạm vi biểu diễn của số dấu chấm động 64bit được hiểu theo cách tương tự như với số chấm động 32bit

Ví dụ các bước biến đổi số thập phân -12.625

10 sang số chấm động chuẩn IEEE 754 chính xác đơn (32 bit):

• Bước 3: Điền các bit vào các trường theo chuẩn:

Số âm: bit dấu S có giá trị 1 Phần mũ E với số thừa K=127, ta có: E-127=3

⇒ E = 3 + 127 = 130 (1000 0010

2)

Trang 13

1.2.5 Biểu diễn các dạng thông tin khác

- Biểu diễn hình ảnh :

Ảnh thực chất là một tập hợp các điểm màu liên tiếp liền nhau hoặc 1 tập hợp các đường hình học nhằm miêu tả 1 phong cảnh sự vật hay một chủ đề nào đó Trên máy tính ảnh được lưu trên các file nhị phân theo các định dạng do nhà sản xuất quy định Hiện tại có hơn 50 định dạng ảnh

khác nhau được chia làm 2 loại cơ bản nhất là ảnh bitmap và ảnh vecto Như ảnh bitmap mỗi bit

t ương ứng một điểm ảnh (giá trị 1 – màu đen, giá trị 0 – màu trắng)

Ta có thể gặp rất nhiều các định dạng ảnh khác nhau như : BMP,ICO,GIF, JPG,…

- Biểu diễn âm thanh : ta có thể mã hóa âm thanh theo hệ đếm nhị phân bằng cách ngắt âm thanh ra

thành nhiều giá trị sau một khoảng thời gian nhất định Sau đó gán cho mỗi giá trị một mã nhị phân và lưu trữ chúng tuần tự trong một tệp Ví thính giác con người chỉ phân biệt được tần số

Trang 14

âm thanh tối đa là fmax=20Khz, nên theo quy luật lấy mẫu tần số ngắt âm thanh tối thiểu phải lớn gấp đôi tần số tối đa fmax

Mã hóa âm thanh bằng 8bit sẽ cho 256 giá trị khác nhau Những khổ âm thanh thường gặp là WAVE, MPEG,…

1.3 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:

+ Quản lý bộ nhớ

CPU 80286 có Bus địa chỉ 24bit và quản lý được 24*220 = 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

Trang 15

+ Chế độ thực: là chế độ hoạt động giống như CPU.8086 Khi bật nguồn điện thì CPU được đặt ở chế độ thực Trong chế độ này CPU quản lý bộ nhớ vật lý lớn đến 24*216 = 1Mb, và có thể

mở rộng đến 16Mb

+ Chế độ bảo vệ

Chế độ bảo vệ cung cấp cơ chế bảo vệ bộ nhớ và công cụ hỗ trợ quản lý bộ nhớ ảo Trong chế độ này CPU quản lý được 214 * 216 = 230 = 1G ô nhớ Các CPU từ 80286 trở về sau đều có khả năng làm việc ở chế độ này

và RAM

ROM : ROM là bộ nhớ chỉ đọc Dữ liệu trong ROM được duy trì ngay cả khi không có

nguồn điện nuôi ROM chứa các phần mềm cơ bản sau:

- Các chương trình kiểm tra hệ thống (quá trình POST): Kiểm tra CPU, kiểm tra RAM, kiểm tra các thiết bị điều khiển và giao diện, các thiết bị ngoại vi như bàn phím, ổ đĩa, v.v

- 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 đọc cung khởi động (mặt 0, rãnh 0, cung vật lý 1) của ổ đĩa khởi động mặc định BIOS thường cho phép chọn ổ đĩa khởi động mặc định Nếu khởi động từ đĩa mềm thì cung khởi động (Boot Record) được đọc Nếu khởi động từ ổ cứng thì cung khởi động chủ (Master Boot Record-MBR) của ổ đĩa cứng thứ nhất được đọc Nội dung cung này được nạp vào RAM tại địa chỉ

0000 : 7C00 CPU chạy chương trình khởi động hệ điều hành tại địa chỉ này

ROM còn chứa các chương trình điều khiển các thiết bị vào-ra cơ bản của máy tính Basic Input/Output/Output System) BIOS là cầu nối giữa phần cứng và phần mềm trong hệ thống máy tính Các chương trình điều khiển này luôn gắn với cấu hình phần cứng của máy tính Thông qua các chương trình này hệ điều hành có thể giao diện được với phần cứng của từng máy tính

(BIOS-RAM: RAM là bộ nhớ thao tác Bộ nhớ RAM có chức năng chứa các phần mềm của hệ

thống (hệ điều hành), phần mềm và dữ liệu của một hoặc nhiều chương trình đang hoạt động (chương trình ứng dụng)

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:

Trang 16

Địa chỉ vật lý

(hexadecimal)

Địa chỉ đoạn (hexadecimal)

Tên và chức năng vùng nhớ

000000-09FFFF 00000 Vùng nhớ quy ước 640Kb dành cho hệ điều hành và

người sử dụng 0A0000-0BFFFF A000 Vùng nhớ 128Kb dành cho hiển thị (VIDEO RAM) 0C0000-0DFFFF C000 Vùng nhớ 128Kb dự phòng cho ROM, mở rộng

(C000,C800,D000,D800) 0E0000-0EFFFF E000 Vùng nhớ 64kb dự phòng cho RAM hệ thống

5 B ộ định thời TIMER 8254

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à thiết bị điều khiển khả trình PIC 8259 hỗ trợ CPU thực hiện

cơ chế ngắt cùng cho phép CPU phản ứng tức thời với yêu cầu của các thiết bị vào-ra dữ liệu

và các thiết bị khác Trong máy vi tính dòng AT có hai thiết bị PIC 8259, mỗi thiết bị ghi nhận được 8 yêu cầu ngắt

Trang 17

7 B ộ điều khiển truy nhập trực tiếp bộ nhớ DMAC 8237 (Direct Memory Access Controller)

DMAC 8237 là thiết bị điều khiển khả trình DMAC 8237 điều khiển quá trình vào/ra dữ liệu trực tiếp giữa bộ nhớ và các thiết bị ngoại vi (ví dụ: thiết bị đĩa từ), gọi tắt là quá trình DMA (Direct Memory Access) Trong máy vi tính dòng AT có hai thiết bị DMAC 8237, mỗi thiết bị phục vụ 4 kênh DMA

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 là thiết bị khả trình CRTC thực hiện chức năng giao diện giữa CPU và màn hình hiển thị CRTC nhận lệnh và dữ liệu từ CPU, tạo ra tín hiệu ảnh và các tín hiệu đồng bộ điều khiển hiển thị trên màn hình CRTC có thể làm việc ở hai chế độ văn bản và đồ hoạ màu

10 Thi ết bị giao diện nối tiếp UART 8250 (Universal Asynchronous Receiver Transmitter)

UART 8250 thực hiện chức năng giao diện kiểu nối tiếp không đồng bộ giữa CPU và các thiết bị ngoại vi theo chuẩn RS232.UART 8250 thực hiện chức năng nhận và phát dữ liệu dạng nối tiếp, tạo và nhận các tín hiệu bắt tay với thế giới bên ngoài theo chuẩn RS232 Trong máy

vi tính dòng AT có hai thiết bị UART 8250

11 Thi ết bị giao diện song song PPI (Programmable Peripheral Interface)

Mạch PPI thực hiện quá trình giao diện song song giữa CPU và các thiết bị ngoại vi PPI thực hiện chức năng nhận và phát dữ liệu dạng song song, tạo và nhạn các tín hiệu bắt tay với các thiết bị ngoại vi

12 Thi ết bị giao diện mềm FDC (Floppy Disk Controller)

FDC thực hiện chức năng giao diện giữa CPU và thiết bị đĩa mềm FDC nhận lệnh và dữ liệu từ CPU hoặc bộ nhớ, chuyển thành dạng thích hợp đưa ra thiết bị đĩa mềm và ngược lại

13 Thi ết bị giao diện đĩa cứng HDC (Hard Disk Controller)

HDC thực hiện chức năng giao diện giữa CPU và thiết bị đĩa cứng theo chuẩn IDE, HDC nhận dữ liệu từ bộ nhớ, chuyển thành dạng thích hợp đưa ra thiết bị đĩa cứng và ngược lại theo chuẩn IDE

Trong PC hiện đại các mạch chức năng như 8254, 8259, 8237, CMOSRAM, 8250, PPI, 8042, điều khiển IDE, cầu PCI, v.v được tích hợp vào các mạch tích hợp cỡ lớn (chipset)

Không gian địa chỉ các thiết bị vào-ra được phân bổ chặt chẽ Địa chỉ các cổng vào-ra (port address) được phân bổ như sau:

Trang 18

060-064 Thiết bị điều khiển giao diện bàn phím KC8042 070-071 CMOS-RAM-Đồng hồ thời gian thực

080-09F Thanh ghi trang DMA 0A0-0BF Bộ điều khiển ngắt PIC-2 8259, thợ

0C0-0DF Bộ điều khiển DMAC-2 8237

0F8-0FF Bộ đồng xử lý 80x87 170-177 Thiết bị điều khiển giao diện IDE-1 1F0-1F7 Thiết bị điều khiển giao diện IDE-0 200-207 Thiết bị giao diện điều khiển trò chơi 278-27F Thiết bị giao diện song song 2 (cổng máy in LPT2) 2F8-2FF Thiết bị giao diện nối tiếp 2 (cổng nối tiếp COM2) 300-31F Card thử nghiệm

378-37F Thiết bị giao diện song song 1 (cổng máy in LPT1)

3B0-3BF Thiết bị giao diện màn hình đơn sắc

3D0-3DF Thiết bị giao diện màn hình VGA

3F0-3F7 Thiết bị giao diện đĩa mềm FDC 3F8-3FF Thiết bị giao diện nối tiếp 1 (cổng nối tiếp COM1)

1.4 Đơn vị xử lý trung tâm CPU (Central Proccessing Unit)

1.4.1 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:

Trang 19

- 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 thái khởi động lại ngay sau khi chuyển xuống mức 0

- A23-A0: BUS địa chỉ (24 tín hiệu địa chỉ, 3 trạng thái) 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ý là 224 = 16Mb Khi CPU làm việc với các cổng vào-ra thì các chân A23-A16 có mức 0, các dây A15-A0 được dùng để xác định địa chỉ 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ý

- GND: Được nối đất (0V)

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: trả lời "HOLD" Khi HLDA tích cực thì các đầu Ao-A23, Do-D15 và một số đầu tín hiệu điều khiển khác có trở kháng cao, CPU bị cách ly với thế giới bên ngoài (Nếu đồng ý thì HLDA=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

PEREQ

MI/-IO

Trang 20

+ -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 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

- READY: Nếu bộ nhớ (thiết bị ngoại vi) cần truy nhập hoàn tất việc chuyển số liệu đến (hoặc đi) chúng cần phát ra tín hiệu READY ở mức tích cực 1 tới vi xử lý, chỉ khi ấy vi xử lý mới đọc số liệu vào hoặc tiếp tục xuất ra số liệu

- Về điều khiển thì 80286 phát ra các tín hiệu trạng thái tới 1 chip gọi là bộ điều khiển bus (82288) tiếp

đó chip này sẽ dịch (giải mã) các tín hiệu trạng thái và phát ra các tín hiệu điều khiển tới các bus cụ thể sau:

Trang 21

1.4.2 Cấu hình bên trong

CPU 80286 được cấu thành từ 4 đơn vị chính như sau:

- Đơn vị BUS (BU):

BU bao gồm các đệm địa chỉ, điều khiển và dữ liệu BU thực hiện giao diện BUS, tạo ra và nhận vào các tín hiệu địa chỉ, điều khiển và dữ liệu và nhập lệnh từ bộ nhớ vào hàng đợi

- Đơn vị lệnh IU

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) : Đơn vị điều khiển CU có chức năng giải mã lệnh và từ

đó tạo ra các tín hiệu điều khiển hoạt động của các đơn vị chức năng khác ở bên trong và bên ngoài đơn vị xử lý trung tâm CPU, nhằm thực thi được lệnh hiện hành CU điều khiển thực hiện các vi thao tác thực hiện lệnh theo nhịp của xung đồng hồ Clock

+ Đơ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

+ 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 : Đơn vị địa chỉ AU gồm các thanh ghi đoạn, các thanh ghi trong chế độ bảo vệ, bộ cộng địa chỉ offset, bộ tạo địa chỉ vật lý từ địa chỉ logic AU quản lý bộ nhớ trong cả hai chế độ làm việc : chế độ thực và chế độ bảo vệ

1.4.3 Quản lý bộ nhớ trong chế độ thực và các thanh ghi đoạn

Trang 22

- Các thanh ghi của CPU 8086 chỉ có độ dài 16bits nên nếu dùng 1 thanh ghi để đánh địa chỉ thì quản lý được 216 ô nhớ

 Để giải quyết vấn đề quản lý 1Mbyte thì ta sẽ thông qua nội dung của 2 thanh ghi 16bits theo phương thức như sau :

+ Chia không gian địa chỉ thành các đoạn nhớ với kích thước cố định là 64Kbyte

++ Mỗi đoạn gồm các ô nhớ liên tiếp, độc lập và được định vị tách rời nhau

++ Mỗi đoạn sẽ được gán một địa chỉ duy nhất xác định gọi là địa chỉ đoán (là địa chỉ của

ô nhớ đầu tiên của đoạn đó, còn được gọi là địa chỉ nền)

++ Mỗi ô nhớ trong đoạn được xác định bằng địa chỉ offset (địa chỉ lệch) : là khoảng cách

từ địa chỉ đoạn đến ô nhớ đó Một cặp giá trị địa chỉ đoạn và địa chỉ lệch có định dạng : Địa chỉ đoạn : Địa chỉ offset được gọi là địa chỉ logic Địa chỉ logic này cho phép định vị chính xác 1 ô nhớ (1byte nhớ) trong không gian địa chỉ

b Cách qu ản lý

Trong chế độ thực bộ nhớ được quản lý theo cơ chế phân đoạn (segmentation), tức là bộ nhớ được định vị và giám sát theo đoạn Trong cơ chế phân đoạn mỗi một chương trình không được xem là một chuỗi liên tục của mã lệnh và dữ liệu mà được chia thành các modul mã lệnh, dữ liệu, ngăn xếp,…Mỗi modul được chứa trong một đoạn nhớ và có một địa chỉ xác định Ở CPU 16bit mỗi một đoạn có kích thước 64Kb Hệ điều hành có thể đặt các modul của chương trình ở bất kỳ chỗ nào trong bộ nhớ vật lý, đoạn nhớ sẽ mang tên của loại modul nó 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 một đoạn có một địa chỉ gọi là địa chỉ đoạn CPU có phần cững hỗ trợ việc quản lý và truy nhập các đoạn, đó là các thanh ghi đoạn 16bit CS, DS, SS, ES Trong chế độ thực thanh ghi đoạn chứa địa chỉ đoạn Cụ thể :

+ 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í của đoạn trong bộ nhớ Ta nhận được địa chỉ nền của đoạn vật lý (địa chỉ của ô nhớ đầu tiên của đoạn) bằng cách dịch trái địa chỉ đoạn đi 4 bit và điền các số 0 vào 4 bit thấp nhất

- Mỗi ô nhớ trong đoạn được định vị bằng một cặp con số : địa chỉ đoạn và địa chỉ offset (địa chỉ lệch), trong đó địa chỉ offset là con số xác định 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ớ Địa chỉ logic của một ô nhớ thường được biểu diễn ở 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

Trang 23

+ 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 nhập các đoạn dữ liệu người lập trình cần xác định offset của các ô nhớ bằng các phương pháp xác định địa chỉ toán hạng (đị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í

- Vì thanh ghi đoạn là thanh ghi 16bit có nhiệm vụ xác định đoạn của ô nhớ Còn các thanh

ghi 16bit còn lại (thanh ghi đa năng, con trỏ, chỉ số) xác định vị trí của ô nhớ trong đoạn

- Vì địa chỉ vật lý có độ dài 20bit

 địa chỉ đoạn chiếm 16bits cao trong 20bits địa chỉ vật lý

Địa chỉ offset chiếm 16bits thấp trong 20bit địa chỉ vật lý

 ta có cách chuyển đổi sau:

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ụ thể như sau:

Công thức tính: Địa chỉ vật lý = Địa chỉ đoạn *10H + Địa chỉ offset

Vd: địa chỉ logic 1234h:0005h sẽ ứng với

Trang 24

địa chỉ vật lí 1234h * 10h + 0005h = 12340h + 0005h = 12345h

Việc đổi từ địa chỉ vật lí sang địa chỉ logic cũng không có gì phức tạp Tuy nhiên, do các segment gối đầu nhau nên mỗi ô nhớ có thể thuộc một vài segment khác nhau Vì vậy, một địa chỉ vật lí

có thể ứ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:

1234h:0005h 1230h:0045h 1200h:0345h 1000h:2345h 1232h:0025h

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:

- Nhận xét:

+ 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

1.4.4 Các thanh ghi

Các thanh ghi là các đơn vị lưu trữ dữ liệu nằm trong CPU có tốc độ truy cập nhanh Chúng được dùng để chứa các toán hạng của lệnh, các kết quả tạm thời của các quá trình tính toán Các thanh ghi trong 80286 được chia ra thành các nhóm sau :

Các thanh ghi đa năng AX, BX, CX, DX :

Trang 25

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ó thể truy nhập từng thanh ghi này như là các thanh ghi 16 bit AX, BX, CX, DX hoặc như các thanh ghi 8 bit 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=5B

- BX (Base): Khi thực hiện các lệnh truy nhập đoạn dữ liệu, BX được dùng để xác định địa chỉ offset hoặc địa chỉ offset nền của ô nhớ trong đoạn

- 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

VD : Để lặp 1 vòng n lần  CX=n Giá trị này được giảm đi 1 khi thực hiện song 1 lần lặp

và cứ tiếp tục như vậy cho tới khi CX=0 thì kết thúc

- DX (Data) : Được dùng để chứa hai byte cao kết quả phép nhân hoặc phần dư của phép chia 16 bit Khi truy nhập các cổng vào/ra có địa chỉ lớn hơn 255, DX được dùng để chứa địa chỉ (xác định địa chỉ) các công này

VD : DX=378H 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

- SP (Base Pointer): BP được dùng để xác định địa chỉ offset hoặc địa chỉ offset nền của ô nhớ khi thực hiện các lệnh truy nhập các đoạn dữ liệu BP thường được dùng để xác định địa chỉ offset hoặc địa chỉ offset nền khi truy nhập đoạn ngăn xếp

- SI (Source Index) : SI được dùng để chứa (xác định) địa chỉ offset hoặc một phần của địa chỉ offset khi truy nhập đoạn dữ liệu SI thường được dùng để chứa địa chỉ offset của xâu ký tự trong đoạn dữ liệu (DS : SI) khi thực hiện lệnh thao tác xâu

- DI (Destination Index) : DI được dùng để chứa (xác định) địa chỉ offset hoặc một phần của địa chỉ offset khi truy nhập đoạn dữ liệu DI thường được dùng để chứa địa chỉ offset của xâu ký tự trong đoạn mở rộng (ES: DI khi thực hiện 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ì

Trang 26

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 (In struction Pointer): là thanh ghi 16 bit IP chứa địa chỉ offset của ô

nhớ trong đoạn mã lệnh Khi nhập lệnh thì IP tự động tăng dần và khi CPU nhập xong một lệnh thì IP trỏ đến ô nhớ chứa lệnh tiếp theo trong đoạn mã lệnh Nội dung IP bị thay đổi bất thường khi CPU thực lệnh nhảy, lệnh gọi chương trình con hoặc 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 vào toàn bộ thanh ghi cờ mà chỉ có thể tác động vào một

số bit cờ qua các lệnh CLC, STC, CLI, STI, CLD, 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

- AF(Auxiliary Flags) : cờ nhớ phụ Cờ AF được sử dụng trong các phép tính số học với các

số BCD (Binary Cođe Decimal) Nếu có nhớ hay có mượn đối với 4 bit thấp thì AF= 1

- 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

- TF (Trap Flag) : cờ bẫy ; Nếu TF = 1, CPU được đặt ở chế độ chạy từng lệnh phục vụ hiệu chỉnh chương trình (debug) Trong chế độ này mỗi lệnh khi được thực hiện xong sẽ gây 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) :

Trang 27

- 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 gặp mã lệnh lệnh dấu phẩy động sẽ sinh 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 (chương trình mô phỏng 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)

1.4.5 Quản lý bộ nhớ trong chế độ bảo vệ

Chế độ bảo vệ (Protected Mode) được thiết kế cho CPU dòng Intel từ 80286 cho đến các CPU 32 bít sau này Chế độ bảo vệ được thiết kế để hỗ trợ hệ điều hành đa nhiệm, cách

ly và bảo vệ hệ điều hành khỏi những truy nhập trái phép của các chương trình ứng dụng, cách

ly và bảo vệ chương trình ứng dụng này khỏi sự truy nhập trái phép của chương trình ứng dụng 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ệ thì mỗi đoạn nhớ được gần một mức đặc quyền và được bảo vệ nhờ cơ chế về quyền truy nhập Các mức đặc quyền được thiết kế để hỗ trợ hoạt động của hệ điều hành

đa nhiệm nhằm:

+ Cách ly và bảo vệ hệ điều hành khỏi các truy nhập trái phép của chương trình ứng dụng + Cách ly và bảo vệ chương trình ứng dụng này khỏi sự truy nhập trái phép của chương trình ứ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 Mức đặc quyền PL = 1 được gắn cho các chương trình thiết lập mức ưu tiên giữa các nhiệm vụ, chương trình hoàn đổi dữ liệu giữa bộ nhớ chính và bộ nhớ thứ cấp (đĩa từ, chương trình 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

Trang 28

+ Đặ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 được lưu trữ trong đoạn nhớ coa mức đặc quyền PL = P chỉ có thể bị truy nhập bởi mã lệnh có mức đặc quyền bằng hoặc cao hơn P (CPL <= DPL, CPL là mức đặc quyền của nhiệm

vụ đang thực hiện, DPL là mức đặc quyền của đoạn dữ liệu bị truy nhậ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 luật về quyền truy nhập thì chưong trình dang thực hiện có thể truy nhập tự do vào các đoạn mã lệnh và đoạn dữ liệu có cùng mức đặc quyền

Một chương trình có thể truy nhập vào một đoạn dữ liệu có mức đặc quyền thấp hơn, nhưng nếu truy nhập hoặc gọi đoạn mã lệnh có mức đặc quyền cao hơn thì 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ố:

- Bảng bộ mô tả toàn cục GDT (bảng GDT - Global Descriptor Table)

Bảng GDT quản lý các đoạn (các vùng nhớ) chứa các chương trình của hệ điều hành và dữ liệu của hệ thống (các vùng nhớ chứa các thông tin có tính chất toàn cục, thuộc không gian nhớ toàn cục) Các chương trình ứng dụng có thể truy nhập vùng nhớ này

+ Bảng bộ mô tả cục bộ LDT (bảng LDT - Local Desriptor Table) Mỗi bảng LDT quản lý các vùng nhớ thuộc một nhiệm vụ (các vùng nhớ chứa các thông tin có tính chất cục bộ, thuộc không gian nhớ cục bộ) Mã lệnh và dữ liệu của một nhiệm vụ đang chạy sẽ được bảo vệ trước

sự truy nhập trái thép của các nhiệm vụ khác Các bảng LDT thuộc không gian nhớ toàn cục + Bảng bộ mô tả ngắt (bảng IDT - Interrupt Descriptor Table) Bảng IDT chứa các bộ mô tả trỏ đến 256 chương trình phục vụ ngắt Bảng IDT đóng vai trò bảng vectơ ngắt, trong đó mỗi véc

Trang 29

đoạn trong Bảng bộ mô tả Người lập trình phải nạp Bộ chọn đoạn vào thanh ghi đoạn tương ứng khi muốn truy nhập một đoạn nào đó

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:

Trang 30

Trường địa chỉ nền đoạn (24 bít : A23 - A0) xác định địa chỉ nền của đoạn ở hệ 16 bít thì địa chỉ này cũng là địa chỉ vật lý nền của đoạn Trường giới hạn đoạn (16 bit : L15 - L0) xác định kích thước của đoạn 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ớ

Nếu P = 0 CPU sẽ tạo ra ngoại tệ "không tồn tại đoạn" khi người 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ả (mức đặc quyề 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

Kiểu bộ mô tả: cấu trúc của trường này phụ thuộc vào loại bộ mô tả Có các loại bộ mô tả sau: Bộ mô tả đoạn dữ liệu Bộ mô tả đoạn mã lệnh, Bộ mô tả đoạn hệ thống Bộ mô tả đoạn hệ (DT = 0) có hai loại: bộ mô tả LDT, bộ mô tả TSS Bộ mô tả cổng giao dịch (DT = 0) (còn gọi là cổng giao dịch) được dùng để truy nhập vào các đoạn mã lệnh Các bộ mô tả này sẽ được trình bày ở các phần sau

- 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 (Accessed):

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 (Conforming) :

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 (Read):

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

Trang 31

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 đoạn:

- 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

+ Hai byte dự phòng cho hệ 32 bit có dạng:

Đối với hệ 16 bít thì hai byte này phải có giá trị là 0000H

c) Bộ mô tả cổng giao dịch (cổng giao dịch): Bộ mô tả cổng giao dịch (cổng giao dịch) được dùng để truy nhập vào các đoạn mã lệnh Cổng giao dịch cung cấp phương tiện chuyển giao điều khiển giữa chương trình nguồn và chương trình dịch, ví dụ qua các lệnh CALL Có thể truy nhập vào các đoạn có mức đặc quyền cao hơn thông qua một cổng giao dịch là cổng gọi

Cổng giao dịch có cấu trúc như sau:

Bộ đếm (WC - word count): xác định số từ cần sao chép từ ngăn xếp của chương trình gọi sang chương trình được gọi Thông số WC chỉ có ở cổng giao dịch kiểu gọi (cổng gọi)

Cấu trúc của byte quyền truy nhập trong Bộ mô tả cổng giao dịch (cổng giao dịch):

Trang 32

Kiểu cổng giao dịch: có 4 loại cổng giao dịch

Kiểu = 4 : cổng giao dịch kiểu gọi (cổng gọi)

Kiểu = 5 : cổng giao dịch kiểu nhiệm vụ (cổng nhiệm vụ)

Kiểu = 6 : cổng giao dịch kiểu ngắt (cổng ngắt)

Kiểu = 7 : cổng giao dịch kiểu bẫy (cổng bẫy)

Bộ mô tả cổng giao dịch kiểu gọi (cổng gọi) thường được dùng để chương trình nguồn có mức đặc quyền thấp hơn gọi chương trình đích có mức đặc quyền cao hơn

Bộ mô tả cổng giao dịch kiểu nhiệm vụ (cổng nhiệm vụ) được sử dụng khi có sự thay đổi nhiệm

vụ trong nhiệm vụ hiện hành Bộ mô tả cổng giao dịch kiểu nhiệm vụ quy chiếu đến Bộ mô tả đoạn TSS

Bộ mô tả cổng giao dịch kiểu ngắt và kiểu bẫy (cổng ngắt và cổng bẫy) cung cấp bộ chọn và địa chỉ offset xác định vị trí của chương trình con phục vụ ngắt bên trong đoạn mã lệnh đó d) Lược đồ truy nhập đoạn nhớ nhờ Bộ chọn đoạn và Bộ mô tả đoạn :

Trong chế độ bảo vệ do bộ chọn đoạn cho khả năng trỏ tới được 213 Bộ mô tả đoạn và mỗi Bộ

mô tả của CPU 80286 trỏ đến một đoạn có kích thước cực đại 216 byte nên CPU 80286 có thể quản lý được bộ nhớ kích thước

2*213*216 = 230 = 1 Gbyte

e) Cơ chế truy nhập bộ nhớ (ô nhớ) qua bảng GDT

Trang 33

Bảng GDT được hệ điều hành tạo ra khi khởi động hệ thống CPU quản lý bảng GDT qua thanh ghi GDTR Thanh ghi GDTR chứa hai thông tin về bảng GDT: Địa chỉ nền bảng và kích thước (giới hạn) bảng Khi có yêu cầu truy nhập đoạn, người yêu cầu cung cấp Bộ chọn đoạn, CPU thực hiện thao tác kiểm tra quyền truy nhập đoạn trước khi cho truy nhập Đối với việc truy nhập đoạn dữ liệu, quá trình kiểm tra được tiến hành theo quy tắc:

EPL = max (CPL, RPL) Ê DPL

trong đó:

+ CPL là mức đặc quyền của nhiệm vụ đang thực hiện Thông thường CPL có giá trị bằng mức đặc quyền của đoạn chứa mã lệnh đang chạy Bộ xử lý trung

tâm có thể thay đổi giá trị của CPL khi điều khiển chương trình chuyển đến một

đoạn mã có sức đặc quyền cao hơn

+ RPL là mức đặc quyền yêu cầu và là mức đặc quyền của bộ chọn Mức đặc quyền RPL được sinh ra bởi người nạp bộ chọn đoạn

+ EPL là mức đặc quyền hiệu dụng

+ DPL là mức đặc quyền của đoạn bị truy nhập

Nếu điều kiện trên không được thoả mãn thì sẽ sinh ra một ngoại lệ và CPU không cho truy nhập đoạn Nếu điều kiện về quyền truy nhập được thoả mãn thì CPU cho truy nhập đoạn Việc truy nhập từng ô nhớ trong đoạn được thực hiện không qua địa chỉ nền đoạn (có được từ Bộ mô tả đoạn vừa được chọn) và địa chỉ offset của ô nhớ đó

Đối với việc truy nhập đoạn mã lệnh, quá trình kiểm tra được tiến hành theo quy tắc: EPL = max (CPL, RPL) ³ DPL

trong đó việc truy nhập một đoạn mã lệnh có mức đặc quyền cao hơn (EPL >

DPL) phải thực hiện thông qua cổng gọi

f) Cơ chế truy nhập bộ nhớ (ô nhớ) qua bảng LDT

Bảng LDT được hệ điều hành tạo ra khi nạp một chương trình ứng dụng vào bộ nhớ hoặc khi thực hiện một nhiệm vụ Mỗi bảng LDT quản lý các đoạn của một chương trình ứng dụng (một nhiệm vụ) Việc quản lý các đoạn (các vùng nhớ) thuộc một chương trình ứng dụng (một nhiệm vụ) được tổ chức như sau :

Trang 34

Mỗi một đoạn nhớ được quản lý bởi một Bộ mô tả đoạn

Các Bộ mô tả đoạn của một nhiệm vụ được chứa trong một bảng LDT riêng biệt Nói cách khác, mỗi bảng LDT quản lý các đoạn nhớ của một nhiệm vụ Mỗi bảng LDT được quản lý bởi một Bộ mô tả LDT Bộ mô tả LDT chứa địa chỉ nền bảng LDT, kích thước bảng, quyền truy nhập bảng (quyền truy nhập nhiệm vụ)

Các Bộ mô tả LDT của các nhiệm vụ được chứa trong bảng GDT, Bảng GDT được quản lý bởi thanh ghi hệ thống GDTR

Khi một nhiệm vụ được thực hiện, hệ điều hành sẽ nạp Bộ chọn LDT vào thanh ghi hệ thống LDTR Thanh ghi LDTR trỏ đến Bộ mô tả LDT vào thanh ghi hệ thống LDTR Thanh ghi LDTR trỏ đến Bộ mô tả LDT trong bảng GDT, từ đây CPU thông qua bảng LDT quản lý được các đoạn của nhiệm vụ đó và bắt đầu (hoặc tiếp tục) thực hiện nhiệm vụ này Để truy nhập các đoạn trong nhiệm vụ, người yêu cầu cần nạp Bộ chọn đoạn vào thanh ghi đoạn tương ứng CPU thực hiện thao tác kiểm tra quyền truy nhập đoạn Nếu điều kiện về quyền truy nhập được thoả mãn thì CPU sẽ sinh ra một ngoại lệ và không cho truy nhập đoạn Việc truy nhập từng ô nhớ trong đoạn được thực hiện thông qua địa chỉ nền đoạn (có được từ Bộ mô tả đoạn vừa được chọn) và địa chỉ offset của ô nhớ đó

g) Cơ chế chuyển điều khiển và gọi chương trình con trong chế độ bảo vệ

Việc chuyển điều khiển xẩy ra khi thực hiện các lệnh nhảy (lệnh JMP) hoặc lệnh gọi chương trình con (lệnh CALL)

Trường hợp thực hiện lệnh nhảy hoặc lệnh gọi trong cùng đoạn mã lệnh của nhiệm vụ đang chạy (lệnh nhảy gắn, lệnh gọi gắn) xẩy ra như sau:

Trang 35

Khi thực hiện lệnh nhảy gần (NEAR JUMP), con trỏ lệnh IP được nạp giá trị mới Chương trình tiếp tục được thực hiện từ vị trí mới do IP trỏ đến

Khi thực hiện lệnh gọi gần (NEAR, CALL), bộ xử lý trung tâm thực hiện các thao tác sau: + Cất giá trị hiện thời của IP vào ngăn tiếp

+ Nạp địa chỉ offset của chương trình con được gọi (đich) vào IP

+ Thực hiện chương trình con (đích)

Trường hợp chuyển điều khiển đến những đoạn mã lệnh khác khi thực hiện lệnh gọi xa (FAR CALL) thì có hai tình huống:

- Đoạn mã lệnh đích có mức đặc quyền thấp hơn hoặc bằng mức đặc quyền của đoạn mã lệnh nguồn hiện tại Khi đó bộ xử lý trung tâm thực hiện các thao tác sau:

+ Cất giá trị hiện thời của CS và IP vào ngăn xếp

+ Nạp bộ chọn đoạn mã lệnh chứa chương trình con (đích) vào CS

+ Nạp địa chỉ offset của chương trình con (đích vào IP

+ Thực hiện chương trình đích

Lệnh RET cho phép rời khỏi chương trình con để trở về chương trình gọi nó Lệnh này khôi phục lại nội dung bộ chọn đoạn mã lệnh nguồn (nội dung thanh ghi CS), nọi dung con trỏ lệnh (nội dung thanh ghi IP) và tiếp tục thực hiện chương trình đã gọi chương trình con này

- Đoạn mã lệnh chương trình con (đích) có mức đặc quyền cao hơn mức đặc quyền của đoạn

mã lệnh nguồn hiện tại Khi đó việc gọi chương trình con (đích) phải thực hiện qua cổng gọi

Bộ chọn đoạn lúc này không trỏ đến bộ mô tả đoạn mã lệnh chứa chương trình con (đích), mà trỏ đến cổng gọi (bộ mô tả cổng gọi) Cổng gọi trỏ đến bộ mô tả đoạn mã lệnh của chương trình con (đích), cổng gọi cũng chứa địa chỉ offset bắt đầu chương trình con (đích), qua đó gọi được chương trình con (đích Bộ xử lý trung tâm thực hiện quá trình này như sau:

+ Tạm lưu giữ nội dung CS, IP, SS, SP hiện thời (thuộc chương trình nguồn)

+ Nạp bộ chọn cổng gọi và kiểm tra quyền truy nhập

+ Cất giữ giá trị tạm lưu của SS và SP nguồn vào ngăn xếp đích

+ Chuyển các tham số từ ngăn xếp nguồn sang ngăn xếp đích

+ Cất giữ giá trị tạm lưu của CS và IP nguồn vào ngăn xếp đích

+ Nạp bộ chọn bộ mô tả đoạn mã lệnh đích và địa chỉ offset (lấy từ cổng gọi), qua đónạp

bộ mô tả đoạn mã lệnh đích

+ Thực hiện chương trình con (đích)

Khi bộ xử lý trung tâm gặp lệnh RET thì việc trở về chương trình nguồn

được thực hiện bắt đầu bằng việc kiểm tra quyền truy nhập, sau đó là khôi phục

nội dung các thanh ghi CS, IP, SS, SP theo một trình tự ngược lại

1.4.6 Cơ chế đa nhiệm

Nhiệm vụ được định nghĩa như là một thực hiện của chương trình nào đó Mỗi một nhiệm vụ

có một đoạn trạng thái nhiệm vụ (đoạn TSS - Task State Segment) chứa toàn bộ trạng thái của nhiệm vụ đó Mỗi đoạn TSS được quản lý (trỏ) bởi một Bộ mô tả TSS nằm trong bảng GDT CPU x86 có phần cứng hỗ trợ thao thác chuyển nhiệm vụ Thao tác chuyển nhiệm vụ thực hiện lưu và bảo vệ toàn bộ trạng thái hoạt động của nhiệm vụ đang thực hiện (bao gồm

Trang 36

nội dung toàn bộ các thanh ghi của CPU, không gian địa chỉ có liên quan và Bộ chọn LDT của nhiệm vụ đang chạy) vào đoạn TSS, sau đó nạp trạng thái của nhiệm vụ tiếp theo từ đoạn TSS tương ứng vào

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 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 toàn bộ các thanh ghi của CPU, các địa chỉ có liên quan và Bộ chọn LDT của nhiệm vụ hiện thời) vào đoạn trạng thái nhiệm vụ TSS của nhiệm vụ này

+ 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

+ Qua Bộ mô tả TSS truy nhập đoạn TSS của nhiệm vụ tiếp theo, nạp trạng thái nhiệm vụ tiếp theo vào các thanh ghi của CPU, trong đó có thanh ghi LDTR Bộ mô tả TSS được nạp vào 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

1.4.7 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

1.4.7.1 Cấu trúc lệ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,

Trang 37

- 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

+ Bộ nhớ

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 (Các phương pháp định vị toán hạng) cho phép xác định nơi chứa toán hạng Nơi chứa toán hạng có thể là: Trên lệnh, thanh ghi và bộ nhớ Bộ nhớ mặc định được hiểu là đoạn dữ liệu, xác định địa chỉ ô nhớ là xác định địa chỉ offset hiệu dụng của ô nhớ trong đoạn đó Trong các trường hợp khác cần chỉ rõ đoạn nhớ cần truy nhập, ví dụ ES: [địa chỉ offset]

Có ba nhóm chế độ định vị toàn hạng

+ Định vị tức thời

+ Định vị thanh ghi

+ Định vị bộ nhớ

Các thao tác có thể xẩy ra giữa các đối tượng sau:

Thanh ghi Tức thời

Thanh ghi Thanh ghi

Bộ nhớ Tức thời

Bộ nhớ Thanh ghi

- Đị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

- Định vị bộ nhớ: Phương pháp định vị bộ nhớ cho phép xác định địa chỉ offset (địa chỉ lệch) của ô nhớ chứa toán hạng, ô nhớ mặc định nằm trong đoạn dữ liệu

+ Đị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ể]

Trang 38

Ví dụ: MOV AX, [1000h]: Đưa nội dung ô nhớ có địa chỉ

DS: 1000h vào AX

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

Trang 39

+ Định vị chỉ số :

Ví dụ: MOV AX, [SI + 1000h] ;

Trong đó [SI] = 10h lệnh thực hiện đưa nội dung ô nhớ có địa chỉ DS:1010h vào AX

Điều khác biệt giữa phương pháp định vị chỉ số so với phương pháp định vị cơ sở bắt đầu

từ hệ 32 bit là có thể viết (SI*bội số) (DI*bội số) Bội số là 1, 2, 4, 8

S ự khác nhau giữa định vị chỉ số và định vị cơ sở ?

Ví d ụ : 1 chuỗi dữ liệu được chứa trong các ô nhớ có địa chỉ A, A+1, A+2 Muốn chuyển

chu ỗi này tới vị trí B, B+1, B+2

Ph ương án đưa ra là : Mov B,A

Mov B+1, A+1 Mov B+2,A+2

 Th ực hiện bằng phương pháp định vị gián tiếp : Dùng 2 thanh ghi sau mỗi lần thực

hi ện lệnh 2 thanh ghi lại tăng lên 1

M ột giải pháp khác đưa ra là sử dụng 1 thanh ghi chỉ số Khi này địa chỉ ô nhớ sẽ gồm 2

ph ần : Nội dung thanh ghi chỉ số và một hằng số (bằng tổng thanh ghi chỉ số cộng với hằng số)

V ới cách này chỉ cần dùng một thanh ghi cho vòng lặp sao chép bằng cách khởi động cho thanh

ghi ch ỉ số bằng 0 (SI=0) rồi tăng dần nội dung thanh ghi này lên 1 lượng bằng kích thước của

kh ối dữ liệu cần sao chép

- Định vị cơ sở chỉ số :

Ví dụ: MOV AX, [BX + SI] ;

Trang 40

trong đó [BX] =1000h, [SI] =10h 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

1.5 Kỹ thuật đường ống và kỹ thuật xử lý song song mức lệnh

Đặt vấn đề

Việc thi hành một lệnh mã máy thường được chia thành 5 giai đoạn:

1. Nhập lệnh (FI Fetch the Instruction)

2 Giải mã lệnh (DI Decode the Instruction)

3 Tạo địa chỉ toán hạng (GOA Generate Operand Address)

4 Nhập toán hạng (FO Fetch Operands)

5 Thực hiện lệnh (EI Execute Instruction)

Với kỹ thuật xử lý lệnh thông thường, đơn vị xử lý trung tâm phải tuần tự thực hiện xong tất cả các giai đoạn thực hiện một lệnh, thường là sau 5 chu kỳ máy, rồi mới chuyển sang nhập và thực hiện lệnh tiếp theo Để tăng tốc độ xử lý lệnh mà không nhất thiết phải tăng

Ngày đăng: 03/12/2013, 10:33

HÌNH ẢNH LIÊN QUAN

Bảng vectơ ngắt là bảng chứa  địa chỉ của các chương trình phục vụ ngắt. Bảng này có - GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH
Bảng vect ơ ngắt là bảng chứa địa chỉ của các chương trình phục vụ ngắt. Bảng này có (Trang 59)
Sơ đồ khối cổng vào-ra nối tiếp trong máy vi tính PC (hình dưới). - GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH
Sơ đồ kh ối cổng vào-ra nối tiếp trong máy vi tính PC (hình dưới) (Trang 78)
Sơ đồ nguyên lý của thiết bị giao diện màn hình ở chế độ văn bản như sau (hình dưới): - GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH
Sơ đồ nguy ên lý của thiết bị giao diện màn hình ở chế độ văn bản như sau (hình dưới): (Trang 92)
Bảng FAT nằm ngay sau cung khởi động. Mỗi volume thường có hai bảng FAT # 1 và # 2,  nội dung hai   bảng này giống hệt nhau - GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH
ng FAT nằm ngay sau cung khởi động. Mỗi volume thường có hai bảng FAT # 1 và # 2, nội dung hai bảng này giống hệt nhau (Trang 102)
Bảng phân khu chính có cấu trúc như sau: - GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH
Bảng ph ân khu chính có cấu trúc như sau: (Trang 106)
Bảng  phân  khu  chính  chứa  các  lối  vào  phân  khu  (Partition  Entry).  Bảng  phân  khu  chính có ít nhất 1 lối vào phân khu và nhiều nhất 4 lối vào phân khu - GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH
ng phân khu chính chứa các lối vào phân khu (Partition Entry). Bảng phân khu chính có ít nhất 1 lối vào phân khu và nhiều nhất 4 lối vào phân khu (Trang 106)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w