Giáo trình Cấu trúc máy tính
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.
c. Thế hệ thứ ba (1965-1971)
Thế hệ thứ ba được đánh dấu bằng sự xuất hiện của các mạch kết (mạch tích
hợp - IC: Integrated Circuit). Các mạch kết độ tích hợp mật độ thấp (SSI: Small
Scale Integration) có thể chứa vài chục linh kiện và kết độ tích hợp mật độ trung
bình (MSI: Medium Scale Integration) chứa hàng trăm linh kiện trên mạch tích
hợp.
Mạch in nhiều lớp xuất hiện, bộ nhớ bán dẫn bắt đầu thay thế bộ nhớ bằng
xuyến từ.
Máy tính đa chương trình và hệ điều hành chia thời gian được dùng.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Cấu trúc máy tính
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:
- giao_trinh_cau_truc_may_tinh.pdf