Giáo trình Cấu trúc máy tính (Mới)

1. Các mốc lịch sử phát triển công nghệ máy tính

Sự phát triển của máy tính được mô tả dựa trên sự tiến bộ của các công nghệ

chế tạo các linh kiện cơ bản của máy tính như: bộ xử lý, bộ nhớ, các ngoại

vi, Ta có thể nói máy tính điện tử số trải qua bốn thế hệ liên tiếp. Việc chuyển

từ thế hệ trước sang thế hệ sau được đặc trưng bằng một sự thay đổi cơ bản về

công nghệ.

a. Thế hệ đầu tiên (1946-1957)

Hình I.1: Máy tính ENIAC

ENIAC (Electronic Numerical Integrator and Computer) là máy tính điện tử

số đầu tiên do Giáo sư Mauchly và người học trò Eckert tại Đại học4

Pennsylvania thiết kế vào năm 1943 và được hoàn thành vào năm 1946. Đây là

một máy tính khổng lồ với thể tích dài 20 mét, cao 2,8 mét và rộng vài mét.

ENIAC bao gồm: 18.000 đèn điện tử, 1.500

công tắc tự động, cân nặng 30 tấn, và tiêu thụ 140KW giờ. Nó có 20 thanh

ghi 10 bit (tính toán trên số thập phân). Có khả năng thực hiện 5.000 phép toán

cộng trong một giây. Công việc lập trình bằng tay bằng cách đấu nối các đầu

cắm điện và dùng các ngắt điện.

Giáo sư toán học John Von Neumann đã đưa ra ý tưởng thiết kế máy tính

IAS (Princeton Institute for Advanced Studies): chương trình được lưu trong bộ

nhớ, bộ điều khiển sẽ lấy lệnh và biến đổi giá trị của dữ liệu trong phần bộ nhớ,

bộ làm toán và luận lý (ALU: Arithmetic And Logic Unit) được điều khiển để

tính toán trên dữ liệu nhị phân, điều khiển hoạt động của các thiết bị vào ra. Đây

là một ý tưởng nền tảng cho các máy tính hiện đại ngày nay. Máy tính này còn

được gọi là máy tính Von Neumann.

Vào những năm đầu của thập niên 50, những máy tính thương mại đầu tiên

được đưa ra thị trường: 48 hệ máy UNIVAC I và 19 hệ máy IBM 701 đã được

bán ra.

b. Thế hệ thứ hai (1958-1964)

Công ty Bell đã phát minh ra transistor vào năm 1947 và do đó thế hệ thứ hai

của máy tính được đặc trưng bằng sự thay thế các đèn điện tử bằng các transistor

lưỡng cực. Tuy nhiên, đến cuối thập niên 50, máy tính thương mại dùng

transistor mới xuất hiện trên thị trường. Kích thước máy tính giảm, rẻ tiền hơn,

tiêu tốn năng lượng ít hơn. Vào thời điểm này, mạch in và bộ nhớ bằng xuyến từ

được dùng. Ngôn ngữ cấp cao xuất hiện (như FORTRAN năm 1956, COBOL

năm 1959, ALGOL năm 1960) và hệ điều hành kiểu tuần tự (Batch Processing)5

được dùng. Trong hệ điều hành này, chương trình của người dùng thứ nhất được

chạy, xong đến chương trình của người dùng thứ hai và cứ thế tiếp tục.

Giáo trình Cấu trúc máy tính (Mới) trang 1

Trang 1

Giáo trình Cấu trúc máy tính (Mới) trang 2

Trang 2

Giáo trình Cấu trúc máy tính (Mới) trang 3

Trang 3

Giáo trình Cấu trúc máy tính (Mới) trang 4

Trang 4

Giáo trình Cấu trúc máy tính (Mới) trang 5

Trang 5

Giáo trình Cấu trúc máy tính (Mới) trang 6

Trang 6

Giáo trình Cấu trúc máy tính (Mới) trang 7

Trang 7

Giáo trình Cấu trúc máy tính (Mới) trang 8

Trang 8

Giáo trình Cấu trúc máy tính (Mới) trang 9

Trang 9

Giáo trình Cấu trúc máy tính (Mới) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 124 trang xuanhieu 9200
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Cấu trúc máy tính (Mới)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Cấu trúc máy tính (Mới)

Giáo trình Cấu trúc máy tính (Mới)
của chương trình: 
 MOV CX, 0; khởi tạo vòng lặp CX=0 
 b. Các biến 
 Trong hợp ngữ các biến có vai trò going như trong các ngôn ngữ bậc cao . 
Mỗi biến có một kiểu dữ liệu và được chương trình gán cho một địa chỉ bộ 
nhớ.Các toán tử giả định nghĩa số liệu.Mỗi toán tử giả có thể được dung để thiết 
lập một hay nhiều dữ liệu của kiểu đã được đưa ra . 
 Trong phần này chúng ta sử dụng DB và DW để định nghĩa tạo nên một byte 
các biến kiểu byte và các biến kiểu word. 
 Các biến kiểu byte 
 Dẫn hướng định nghĩa một biến kiểu byte của trình biên dịch có dạng sau 
đây: 
 Tên DB giá_trị_khởi_tạo 
 Trong đó toán tử giả DB được hiểu là "định nghĩa byte" 
 Vídụ: 
 TONG DB 4 
 Với dẫn hướng này,Hợp ngữ sẽ gán tên TONG cho một byte nhớ và khởi 
tạo nó giá trị 4.Một dấu chấm hỏi (? ) đặt ở vị trí của giá trị khởi tạo sẽ tạo nên 
một byte không được khởi tạo. 
 Vídụ: 
 TONG DB ? 
 Giới hạn thập phân của các giá trị khởi tạo nằm trong khoảng từ -128 đến 
127 với kiểu có dấu và từ 0 đến 255 với kiểu không dấu.Các khoảng này vừa 
đúng giá trị của một byte. 
 111 
 Các biên kiêu word 
 Dẫn hướng định nghĩa một biến kiểu word của trình biên dịch có dạng sau 
đây: 
 Tên DW giá_trị_khởi_tạo 
 Toán tử giả DW có nghĩa là "định nghĩa word". 
 Vídụ: 
 BIEN1 DW? 
 BIEN2 DW- 8 
 BIEN3 DW16 
 Giống như với biến kiểu byte một dấu chấm hỏi ờ vị trí giá trị khởi tạo có 
nghĩa là word không được khởi tạo giá trị đầu.Giới hạn thập phân của giá trị khởi 
tạo được xácđịnh từ -32768 đến 32767 đối với kiểu có dấu và từ 0 đến 65535 đối 
với kiểu không dấu. 
 .Các biến mảng 
 Trong ngôn ngữ hợp ngữ,mảng chỉ là một chuỗi các byte nhớ hay Word. 
 Vídụ để định nghĩa mảng 3 byte có tên MANG với các giá trị khởi tạo là 5h 
, 10h ,15 h chúng ta có thể viết: 
 MANG DB 5h,10h,15 h 
 Tên MANG được gán cho byte đầu tiên , MANG+1 cho byte thứ hai và 
MANG+2 cho byte thứ ba . Nếu như trình biên dịch gán địa chỉ offset 0400 h cho 
MANG thì bộ nhớ sẽ như sau : 
 Phần tử Địa chỉ Nội dung 
 MANG 0400h 5h 
 MANG+1 0401h 10h 
 MANG+2 0402h 15h 
 Các biến mảng word có thể được định nghĩa một cách tương tự. 
 112 
 Vídụ: MANG DW 100,72 ,48,54 
 Sẽ tạo nên một mảng có 4 phần tử với các giá trị khởi tạo là 100 ,72,48, 
54.Từ đầu tiên được gán với tên MANG, từ tiếp theo gán với MANG+2, rồi đến 
MANG+4 v.v . Nếu mảng bắt đầu tại 07F0 h thì bộ nhớ sẽ như sau : 
 Phân tử Địa chỉ Nội dung 
 MANG 07F0h 100d 
 MANG +2 07F2h 72d 
 MANG +4 07F4h 48d 
 MANG +6 07F6h 54d 
 Khi chúng ta khởi đầu các phần tử của mảng với cùng 
 một giá trị ta ding toán tử DUP trong lệnh . 
 c. Các hằng có tên 
 Để tạo ra các mã lệnh Hợp ngữ dễ hiểu, người ta thường dùng các tên tượng 
trưng để biểu diễn các hằng số. 
 EQU (EQates :coi như bằng) . 
 Để gán tên cho hằng,chúng ta có thể sử dụng toán tử giả EQU. 
 Cúpháp: 
 Tên EQU h ằ ng_s ố 
 Vídụ: 
 LF EQU OA h 
 sẽ gán tên LF ch o OAh. là mã ASCII của ký tự xuống dòng. Tên LF có 
thể được dùng để thay cho OA h tại bất cứ đâu trong chương trình.Trình biên dịch 
sẽ dịch các lệnh: 
 MOV DL,OAH 
 và: 
 MOV DL,LF 
 ra cùng một chỉ thị máy. 
 113 
2. Cấu trúc chương trình 
 Phần khai báo Segment đơn giản 
 .MODEL kiêu 
 .STACK độ lớn (tính theo byte) 
 .DATA 
 Khai báo biến 
 .CODE 
 Nhãn: 
 Mov AX,@DATA 
 Mov DS,AX 
 Than chương trình 
 lệnh trở về DOS 
 [ các chương trình con] (nêu có) 
 END Nhãn 
3. Các lệnh điều khiển 
 a. Lệnh điều khiển .STASK 
 Cú pháp: 
 .STACK kích thước ngăn xếp 
 Chức năng: Xác định kích thước ngăn xếp (tính theo Byte).Với lệnh này 
 DOS sẽ xác lập địa chỉ đầu của ngăn xếp và giá trị đó được ghi vào thanh 
 ghi đoạn SS. 
 b. Lệnh điều .CODE 
 Cú pháp: 
 .COD E 
 114 
Chức năng: Đánh dấu điểm khởi đầu của vùng nhớ chứa mã lệnh. 
 c. Lệnh điểu khiển .DATA 
Cúpháp: .DAT A 
Ph ần khai báo và gán giá trị ban đầu của các biến nhớ 
Chức năng: Đánh dấu điểm khởi đầu của vùng nhớ chứa số liệu. 
 d. Lệnh điều khiển .MODEL 
Cú pháp: 
 .MODEL kiểu bộ nhớ (Tiny ,Small,Medium,Compact,Large, Huge) 
Chức năng: Xác định mô hình bộ nhớ cho một Module Assembly sử dụng 
tập lệnh điều khiển Segment đơn giản. 
•Tiny: Cả phần mã máy của chương trình (CODE ) phần dữ liệu (DATA) 
cùng nằm trong một Segment 64KB. Cả CODE và DATA đều là NEAR. 
• Small:Phần mã máy của chương trình (CODE ) có thể lớn hơn 64KB phần 
dữ liệu (DATA) cùng nằm trong một Segment 64KB.Cả CODE và DATA 
đều là NEAR. 
• Medium: Phần mã máy của chương trình (CODE ) nằm trong một 
Segment 64 KB phần dữ liệu (DATA) cùng nằm trong một 64KB.CODE là 
FAR phầnDATA là NEAR. 
•Compact: Phẩn mã máy của chương trình (CODE ) nằm trong một Segment 
64KB phần dữ liệu (DATA) cùng nằm trong một vùng nhớ lớn hơn 64KB 
.CODE là NEAR và DATA là FAR. 
•Large: Phẩn mã máy của chương trình (CODE ) và phần dữ liệu (DATA) 
nằm trong một vùng nhớ lớn hơn 64KB.CODE và DATA là FAR. Một 
trưòng số liệu không vượt quá 64KB. 
•Huge:Phần mã máy c ủa chương trình (CODE ) và phần dữ liệu (DATA) 
nằm trong một vùng nhớ lớn hơn 64KB.CODE và DATA là FAR. Cho phép 
trường số liệu vượt quá 64KB. 
115 
 Vídụ: 
 Hãy viết một xâu ký tự 'XI NCHAOCÁCBAN!' ra màn hình. 
 Cách giải: 
 Dùng chức năng hiện một xâu ký tự kết thúc bằng dấu $ ra màn hình. Chức 
 năng thứ 9 của hàm ngắt int2lh của DOS cho phép chúng ta hiện một xâu ký 
 tự kết thúc bằng $ ra màn hình nếu D S : DX chứa địa chi SEG:OFFSE T 
 của biến xâu.Do vậy chương trình sẽ như sau : 
 .MODEL small 
 .STACK lOO h 
 .DATA 
 Thao db 'XI NCHAOCÁCBAN!$' ;Khai báo biến xâu ký tự 
 .COD E 
 Program1: 
 Mov AX,@DATA ;Đưa phẩn địa chi SEGMENT của phân 
 Mov DS,AX. ;đoạn dữ liệu vào thanh ghi segment DS 
 Mov DX,OFFSET Tbao ;DX chứa phần địa chi OFFSET 
 Mov AH,9 ;Gọi hàm-hiện xâu ký tự 
 Int 21h ;Hiện xâu ký tự Tbao ra màn hình 
 Mov AH,4Ch ;Kết thúc chương trình trở về DOS 
 Int 21 h 
 END Programl 
4. Ngăn xếp và các thủ tục 
 Ngăn xếp (stack) 
 STACK : là một cấu trúc dữ liệu một chiều. Các phần tử cất vào và lấy 
 ra theo phương thức LIFO (Last In First Out). Mỗi chương trình phải dành 
 ra một khối bộ nhớ để làm stack bằng khai báo STACK. Ví dụ : .STACK 
 100H ; Xin cấp phát 256 bytes làm stack 
 116 
 Là 1 phần của bộ nhớ, được tổ chức lưu trữ dữ liệu theo cơ chế vào 
sau ra trước (LIFO). 
 Trong lập trình có khi cần truy xuất đến các phần tử trong STACK 
nhưng không được thay đổi trật tự của STACK. Để thực hiện điều này ta 
dùng thêm thanh ghi con trỏ BP : trỏ BP về đỉnh Stack : MOV BP,SP 
thay đổi giá trị của BP để truy xuất đến các phần tử trong Stack : [BP+2] 
 Phần tử được đưa vào STACK lần đầu tiên gọi là đáy STACK, phần 
tử cuối cùng được đưa vào STACK được gọi là đỉnh STACK. 
 Khi thêm một phần tử vào STACK ta thêm từ đỉnh, khi lấy một phần 
 tử ra khỏi STACK ta cũng lấy ra từ đỉnh địa chỉ của ô nhớ đỉnh STCAK 
 luôn luôn bị thay đổi. 
 SS dùng để lưu địa chỉ segemnt của đoạn bộ nhớ dùng làm STACK 
 SP để lưu địa chỉ của ô nhớ đỉnh STACK (trỏ tới đỉnh STACK) 
 Ví dụ: 
 A,B,C là các Word 
 MOV BP,SP 
 MOV AX,[BP] ;AX =D 
 MOV AX,[BP+2] ;AX= C 
 MOV AX,[BP+6] ;AX=A 
 Để lưu 1 phần tử vào Stack ta dùng lệnh PUSH 
 Để lấy 1 phần tử ra từ Stack ta dùng lệnh POP 
 PUSH nguồn : đưa nguồn vào đỉnh STACK 
 PUSHF : cất nội dung thanh ghi cờ vào STACK 
 POP và POPF : dùng để lấy một phần tử ra khỏi STACK. 
117 
 Cú pháp : POP đích : đưa nguồn vào đỉnh STACK 
 POPF : cất nội dung ở đỉnh STACK vào thanh 
ghi cờ 
 Chú ý : - Ở đây đích là một thanh ghi 16 bit (trừ thanh ghi IP) hay 
một từ nhớ .Các lệnh PUSH, PUSHF, POP và POPF không ảnh hưởng tới 
các cờ 
 Khai báo thủ tục 
 Cú pháp khai báo một thủ tục 
 Tên PROC type 
 ;...cáclệnh trong thủ tục 
 RET 
 Tên ENDP 
 Tên: là tên của thủ tục do người viết định nghĩa 
 type: Toán hạng tuy chọn là: 
 - NEAR:Dòng lệnh gọi thủ tục ở cùng đoạn với thủ tục 
 - FAR: Dòng lệnh gọi thủ tục ở trong một đoạn khác 
 Các lệnh thủ tục CALL- RET 
 Lệnh CALL được dùng để gọi một thủ tục. 
 Cú pháp như sau : 
 CALL Tên 
 Trong đóTên là tên của thủ tục do người lập trình đặt. 
 Để trở về từ một thủ tục chúng ta dùng lệnh RET, mọi thủ tục ngoại 
 trừ thủ t ục chính đều phải có lệnh RET ở cuối thủ tục. 
 Ví dụ về chương trình con 
118 
 Trình bày 1 chương trình cộng 2 số gồm 2 phần tổ chức theo kiểu 
 chương trình chính và chương trình con.Hai phần này truyền tham số 
 với nhau thông qua ô nhớ dành cho biến (thanh ghi ngoài). 
 TITLE CT : ADD2SO 
 .MODEL SMALL 
 .STACK l00 h 
 .DATA 
 TBAO DB 'HAY VÀO 2 s o NGUYÊN $' 
 Soi DB ? 
 So 2 DB 7 
 Ton g DB 7 
 .COD E 
 Program3: 
 MOV AX,@Data ;khởi tạo DS 
 MOV DS,AX 
 MOV AH,9 ;hàm hiện thông báo 
 LEA DX,TBAO ;nạp địa chỉ nội dung thông báo vào DX 
 INT 21 h ;hiện thông báo 
 MOV AH1 ;hàm đọc ký tự Soi 
 INT 21 h ;đọc 1 ký tự 
 MOV Sol,AL ;cất mã của số 1 
 MOV DL', ' ;dấu phẩy xen giữa 
 MOV AH,2 ;hàm hiện ký tự ra màn hình 
 INT 21 h ;hiện ký tự Số 1 ra màn hình 
 MOV AH,1 ;hàm đọc kýt ự 
 INT 21 h ;đọc ký t ự số 2 
 MOV So2,AL ;Cất mã c ủ a Số 2 
119 
 CALL CONG ;gọi thủ tục cộng 2 số 
 MOV AH,4Ch 
 INT 21 h ;trở về DOS 
 CON G Proc ;chương trình con cộng hai số 
 MOV AL,Sol ;lấy mã Số 1 
 ADD AL,So2 ;cộng với mã Số 2 
 ADD Tong,AL ;Đưa giá trị tổng vào biến Tong 
 RET ;lệnh trở về chương trình chính 
 CONG Endp ; kết thúc chương trình con 
 END Program 3 ; kết thúc chương trình chính 
TÀI LIỆU THAM KHẢO 
 1. Kiến trúc máy tính – Võ Văn Chín, Đại học Cần Thơ, 1997. 
 120 
2. Computer Architecture: A Quantitative Approach, A. Patterson and J. 
 Hennesy, Morgan Kaufmann Publishers, 2nd Edition, 1996. 
3. Computer Otganization and Architecture: Designing for Performance, Sixth 
 Edtion, William Stallings, Prentice Hall 
 121 
 MỤC LỤC 
Chương I: Tổng quan về kiến trúc máy tính ........................................... 1 
 1. Các mốc lịch sử phát triển công nghệ máy tính ........................................ 3 
 2. Thông tin và sự mã hóa thông tin .............................................................. 7 
 3. Đặc điểm của các thế hệ máy tính điện tử ............................................... 23 
 4. Kiến trúc và tổ chức máy tính .................................................................. 25 
 4.1 Khái niệm kiến trúc máy tính ............................................................ 25 
 4.2 Khái niệm tổ chức máy tính ............................................................... 26 
 5. Các mô hình kiến trúc máy tính .............................................................. 26 
 5.1 Mô hình kiến trúc Von Neumann ...................................................... 26 
 5.2 Mô hình kiến trúc Havard ................................................................. 31 
Chương II : Kiến trúc tập lệnh của máy tính .........................................34 
 1. Thành phần cơ bản của một máy tính ..................................................... 34 
 2. Kiến trúc các tập lệnh CISC và RISC ..................................................... 37 
 3. Mã lệnh ...................................................................................................... 41 
Chương III: Bộ xử lý ....................................................................................49 
 1. Sơ đồ khối của bộ xử lý ............................................................................ 49 
 2. Đường dẫn dữ liệu .................................................................................... 51 
 3. Bộ điều khiển ............................................................................................ 54 
 4. Tiến trình thực hiện lệnh máy .................................................................. 57 
 5. Kỹ thuật ống dẫn lệnh .............................................................................. 60 
 122 
 6. Kỹ thuật siêu ống dẫn lệnh ....................................................................... 62 
 7. Các chướng ngại của ống dẫn lệnh .......................................................... 63 
 8. Các loại ngắt.............................................................................................. 67 
Chương IV: Bộ nhớ ........................................................................................68 
 1. Phân loại bộ nhớ ....................................................................................... 68 
 2. Các loại bộ nhớ bắn dẫn ........................................................................... 72 
 3. Hệ thống nhớ phân cấp ............................................................................ 72 
 4. Kết nối bộ nhớ với bộ xử lý ...................................................................... 74 
 5. Các tổ chức cache ..................................................................................... 76 
Chương V: Thiết bị nhớ ngoài ....................................................................86 
 1. Các thiết bị nhớ trên vật liệu từ ............................................................... 86 
 1.1. Đĩa từ (đĩa cững, đĩa mềm) ................................................................. 86 
 1.2. Băng từ ................................................................................................ 89 
 2. Thiết bị nhớ quang học ............................................................................. 90 
 2.1. CD-ROM, CD-R/W ............................................................................ 91 
 2.2. DVD-ROM, DVD-R/W ....................................................................... 91 
 2.3. Blu-ray................................................................................................. 92 
 3. Các loại thẻ nhớ ........................................................................................ 92 
 4. An toàn dữ liệu trong lưu trữ ................................................................... 93 
Chương VI : Các loại bus .............................................................................98 
 1. Định nghĩa bus, bus hệ thống ................................................................... 98 
 123 
 2. Bus đồng bộ và không đồng bộ ................................................................ 99 
 3. Hệ thống bus phân cấp ........................................................................... 104 
 4. Các loại bus sử dụng trong các hệ thống vi xử lý .................................. 105 
Chương VII: Ngôn ngữ Assembly ............................................................ 108 
 1. Tổng quan ............................................................................................... 108 
 2. Cấu trúc chương trình ............................................................................ 114 
 3. Các lệnh điều khiển ................................................................................ 114 
 4. Ngăn xếp và các thủ tục .......................................................................... 116 
 124 

File đính kèm:

  • pdfgiao_trinh_cau_truc_may_tinh_moi.pdf