(NB) Giáo trình Kiến trúc máy tính với mục tiêu giúp các bạn có thể trình bày lịch sử của máy tính, các thế hệ máy tính và cách phân loại máy tính; Mô tả thành phần cơ bản của kiến trúc máy tính, các tập lệnh; Các kiểu kiến trúc máy tính: mô tả kiến trúc, các kiểu định vị; Giải thích cấu trúc của bộ xử lý trung tâm: tổ chức, chức năng và nguyên lý hoạt động của các bộ phận bên trong bộ xử lý.
ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI TRƯỜNG CAO ĐẲNG NGHỀ VIỆT NAM - HÀN QUỐC THÀNH PHỐ HÀ NỘI TẠ VĂN BẰNG (Chủ biên) BÙI VĂN CÔNG – NGUYỄN ANH DŨNG GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH Nghề: Cơ điện tử Trình độ: Trung cấp (Lưu hành nội bộ) Hà Nội - Năm 2019 LỜI NÓI ĐẦU Hiện nay, nhu cầu giáo trình dạy nghề để phục vụ cho trường đào tạo dạy nghề phạm vi toàn quốc ngày tăng, đặc biệt giáo trình đảm bảo tính khoa học, hệ thống phù hợp với điều kiện thực tế công tác dạy nghề nước ta Giáo trình “Kiến trúc máy tính ” biên soạn theo kế hoạch đào tạo chương trình mơn học phù hợp với trường dạy nghề Giáo trình biên soạn dựa sở đúc rút kinh nghiệm giáo trình “Kiến trúc máy tính ” kinh nghiệm nhiều năm giảng dạy mơn chun nghành điện Ngồi biên soạn tác giả tham khảo số tài liệu lưu hành, giáo trình không sâu mặt lý luận mà ý đến tính tốn, ứng dụng kỹ thuật phục vụ hoạt động sản xuất dạy học Mặc dù nhóm biên soạn cố gắng phát triển giáo trình cho phù hợp hiệu với sinh viên trung cấp nghề Cơ điện tử, chắn cịn nhiều thiếu sót Chúng tơi mong nhận ý kiến đóng góp bạn đọc đồng nghiệp để giáo trình hồn thiện Xin chân thành cảm ơn! Hà Nội,ngày tháng năm 2019 Chủ biên: Tạ Văn Bằng MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH Chương Tổng quan 1.1 Các hệ máy tính 1.2 Phân loại máy tính 10 1.3 Thông tin mã hóa thơng tin 12 Chương 17 Kiến trúc phần mềm xử lý 17 2.1 Thành phần máy tính 17 2.2 Tập lệnh 20 2.3 Kiến trúc RISC 24 Chương 26 Tổ chức nhớ 26 3.1 Đường liệu 26 3.2 Bộ điều khiển 27 3.3 Diễn tiến thi hành lệnh mã máy 30 3.4 Ngắt 32 3.5 Kỹ thuật ống dẫn 34 3.6 Siêu ống dẫn 35 Chương 36 Bộ nhớ 36 4.1 Các loại nhớ 36 4.2 Các cấp nhớ 40 4.3 Truy cập liệu nhớ 42 4.4 Bộ nhớ Cache 43 Chương 49 Thiết bị lưu trữ 49 5.1 Đĩa từ 49 5.2 Đĩa quang 51 5.3 Các loại thẻ nhớ 52 5.4 Các chuẩn Bus 52 Chương 57 Ngôn ngữ Assembly 57 6.1 Tổng quan 57 6.2 Cấu trúc chương trình 58 6.3 Các lệnh điều khiển 64 Tài liệu tham khảo 81 GIÁO TRÌNH KIẾN TRÚC MÁY TÍNH Tên mơn học: Kiến trúc máy tính Mã số mơn học: MH 16 Thời gian môn học: 45 ( LT: 22 ; TH: 20 giờ; KT: ) I Vị trí, tính chất mơn học: Vị trí : Là môn học kỹ thuật sở Môn học bố trí học trước mơn học, mơ đun: Anh văn chuyên nghề, Tin học đại cương môn học/mô đun chun mơn nghề Tính chất : Là mơn học bắt buộc chương trình đào tạo nghề Cơ điện tử II Mục tiêu mơ đun: - Trình bày lịch sử máy tính, hệ máy tính cách phân loại máy tính - Mơ tả thành phần kiến trúc máy tính, tập lệnh Các kiểu kiến trúc máy tính: mơ tả kiến trúc, kiểu định vị - Giải thích cấu trúc xử lý trung tâm: tổ chức, chức nguyên lý hoạt động phận bên xử lý - Mô tả diễn tiến thi hành lệnh mã máy số kỹ thuật xử lý thông tin: ống dẫn, siêu ống dẫn, siêu vơ hướng - Trình bày chức ngun lý hoạt động cấp nhớ, phương pháp an toàn liệu thiết bị lưu trữ ngoài; - Giải thích tập lệnh Assembly - Chủ động sáng tạo học tập III Nội dung mô đun: Nội dung tổng quát phân bổ thời gian Thời gian TT Tên chương mục Chương 1:Tổng quan Thực hành/ thực tập/thí Tổng Lý Kiểm nghiệm số thuyết tra /bài tập/ thảo luận 2 4 1.Các hệ máy tính 2.Phân loại máy tính 3.Thơng tin mã hóa thơng tin Chương 2: Kiến trúc phần mềm xử lý 1.Thành phần máy tính 2.Tập lệnh 3.Kiến trúc RISC Kiểm tra Chương : Tổ chức xử lý 1.Đường liệu 2Bộ điều khiển 3.Diễn tiến thi hành lệnh mã máy 4.Ngắt 5.Kỹ thuật ống dẫn 6.Siêu ống dẫn Kiểm tra Chương : Bộ nhớ 1.Các loại nhớ 2.Các cấp nhớ 3.Truy cập liệu nhớ 4.Bộ nhớ Cache Kiểm tra Chương : Thiết bị lưu trữ 16 1.Đĩa từ 2.Đĩa quang 3.Các loại thẻ nhớ 4.Các chuẩn BUS Kiểm tra Chương : Ngôn ngữ Assembly 1.Tổng quan 2.Cấu trúc chương trình 3.Các lệnh điều khiển 4.Ngăn xếp thủ tục Kiểm tra Cộng : 45 22 20 Chương Tổng quan Mục tiêu - Trình bay lịch sử phát triển thành tựu máy tính - Mơ tả thành phần máy tính - Trình bày cách biến đổi hệ thống số, bảng mã thông dụng dùng để biểu diễn ký tự - Chủ động sáng tạo học tập 1.1 Các hệ máy tính Thế hệ Khoảng thời gian Công nghệ 1940 – 1956 Đèn điện tử chân không(Vacuum Tubes ) 1956 – 1963 Transistors 1964 – 1971 Mạch tích hợp (Integrated Circuits) 1971 – Vi xử lý (Microprocessors) 1.1.1.Thế hệ Hình 1.1 Thế hệ máy tính a.Máy tính ENIAC Electronic Numerical Integrator and Computer Do John Mauchly John Presper Eckert Đại học Pennsylvania thiết kế Đặc điểm: Dài 20 mét, cao 2,8 mét rộng vài mét, nặng 30 18.000 đèn điện tử 1.500 rơle Tiêu thụ 140KW 5000 phép cộng/giây Xử lý theo số thập phân Lập trình cách thiết lập vị trí chuyển mạch cáp nối b.Máy tính von Neumann Máy tính IAS (Princeton Institute for Advanced Studies) Máy tính von Neumann sở cho kiến trúc máy tính đại 1.1.2 Thế hệ Hình 1.2 Máy tính Von Neuman Thay đèn điện tử transistor lưỡng cực Kích thước máy tính giảm, rẻ tiền hơn, tiêu tốn lượng Nổi tiếng máy PDP-1 DEC IBM 7094 Ngơn ngữ lập trình cấp cao (FORTRAN) hệ điều hành kiểu (Batch Processing) sử dụng 1.1.3 Thế hệ Hình 1.3 máy tính hệ Nhiều transistor phần tử khác tích hợp chip bán dẫn Mạch tích hợp mật độ thấp SSI (Small Scale Integration) chứa vài chục transistor MOV [ BX ], AX Code Ends End Begin Lệnh XCHG : (Exchange) * Cú pháp : XCHG < đích > ,< nguồn > Tốn hạng < nguồn > < đích > ghi hay nhớ * Cơng dụng : dùng để hốn chuyển nội dung hai tốn hạng < đích > * Ghi : - Lệnh không ảnh hưởng đến cờ hiệu - Không dùng lệnh với ghi đoạn Ví dụ : A DW B DW 1234h 3456h MOV AX , A XCHG AX , B MOV A , AX Lệnh PUSH * Cú pháp : PUSH < nguồn > < Nguồn >: Có thể ghi hay nhớ 16 bit * Công dụng : Dùng để nạp nội dung toán hạng < nguồn > vào stack ( chồng) ghi SP giảm hai đơn vị Lệnh POP * Cú pháp : POP < đích > Ngược lại với lệnh PUSH lệnh POP lấy nội dung đỉnh STACK đưa vào toán hạng đỉnh SP tăng lên hai đơn vị * Lưu ý : 67 Để cất giữ ghi việc sử dụng lệnh PUSH , lệnh POP dùng lệnh POP ta phải lấy ngược với lệnh PUSH Ví dụ : PUSH AX PUSH BX PUSH CX Ta dùng lệng POP ngược lại với PUSH POP CX POP BX POP AX Lệnh XLAT * Cú pháp : XLAT * Công dụng : Dùng để chuyển nội dung số ô nhớ (8 bit ) vào ghi AL * Ghi : DS :BX chứa địa offset vùng nhớ AL chứa thứ tự nhớ b Nhóm lệnh tính tốn số học Nhóm lệnh xử lý phép cộng Lệnh ADD: ( Addition ) Cú pháp : ADD < Dest > , < Source > < Dest > = < Dest > + < Source > Dest : Là ghi hay nhớ Source : Là ghi hay nhớ hay trực Chức : Dùng để cộng khơng nhớ tốn hạng Dest toán hạng Source , kết lưu vào toán hạng Dest Lệnh ảnh hưởng đến cờ : SF, CF , OF , AF, PF, ZF LệnhADC ( Addition With Carry ) Cú pháp : ADC < Dest > , < Source > < Dest > = < Dest > + < Source > + CF Tương tự lênh ADD , lệnh ADC thực phép cộng có nhớ 68 Lệnh ADC lấy toán hạng < Dest > + < Source> + cờ CF, kết lưu vào toán hạng Dest , lệnh thường dùng cho phép cộng lớn 16 bít Lệnh INC : ( Increment ) Cú pháp : INC < Dest > < Dest > = < Dest > + Dest : Có thể ghi hay nhớ Lệnh ảnh hưởng đến cờ : OF , ZF , PF , AF , SF Ví dụ : Cho hai số A, B dạng double word chứa hai số nguyên khơng dấu , Viết chương trình cộng hai số A , B Kết đưa vào biến C , có sử lý trường hợp tràn số Code SEGMENT ASSUME CS : Code , DS : Code ORG 100h Begin : Code MOV AX , Word PTR A MOV BX , Word PTR A+2 ADD AX , Word PTR B ADC BX , Word B+2 MOV Word Int 20h PTR C+2 , A DD 7000F000h B DD 90002000h C DB Dup( ) ENDS END Begin Nhóm lệnh xử lý phép trừ Lệnh SUB ( Subtract) * Cú pháp: SUB < dest>, < Dest >= - 69 Source :có thể ghi hay nhớ Lệnh source lấy nội dung toán hạng dest trừ toán hạng source kết lưu vào dest Ví dụ : Mov AX , 1234h Sub AX , 0345h; AX = 1234h - 0345h Lệnh Sub ảnh hưởng đến sáu cờ 0F , CF , AF , PF , SF ,ZF Lệnh SBB ( Subtract with Borrow) * Cú pháp: SBB < dest > , < source > < Dest > = < Dest > - < Source > - CF Lệnh SBB lấy toán hạng < Dest > - < Source > trừ thêm cờ CF , kết lưu vào toán hạng Dest LệnhDEC ( Decrement) * Cú pháp: DEC < Dest > < Dest > = < Dest > -1 Lệnh Dest lệnh giảm đơn vị Lệnh ảnh hưởng đến Cờ Cờ CF không ảnh hưởng tới Lưu ý : Lệnh SBB sử dụng cho trường hợp số lớn 16 bít Ví dụ : Viết chương trình trừ số :A=70002000h , B=90003000h,kết lưu vào nhớ C = Byte Nếu byte cao C =1 kết số âm , ngược lại số dương Code Segment Assume CS :Code ORG 100h Mov AX , Word PTR A Mov BX , Word A+2 Begin: PTR SUB AX , Word PTR B SUB BX , Word PTR B+2 70 Mov Word PTR C , AX Mov Word PTR C+2 , BX ADC Word PTR C +4 Int Code 20h A DB 70002000h B DB 90003000h C DB Dup ( ? ) Ends End Begin Nhóm lệnh xử lý phép nhân Lệnh MUL ( Multiply) * Cú pháp: MUL < Source> < Source> ghi hay nhớ bít hay 16 bít Trường hợp : Nếu < Source > có độ dài bít lệnh MUL lấy nội dung ghi AL nhân với source, kết lưu vào ghi AX Trường hợp 2: Nếu source có độ dài 16 bít lệnh MUL lấy nội dung ghi AX nhân với sourrce , kết 32 bít :16 bít thấp lưu vào AX, 16 bit cao lưu vào DX Ví dụ : Mov AL , 12h Mov BL , 10h MUL BL ; BL = 120h , AX = 0120h Mov AX ,1234h Mov BX , 100h MUL BX Nhóm lệnh xử lý phép chia Lệnh DIV * Cú pháp: DIV < Source > Tương tự phép nhân < source > có trường hợp 71 Trường hợp 1:Nếu source có độ dài bít lệnh DIV lấy nội dung ghi AX chia cho source , thương số phép chia lưu ghi AL dư số lưu AH Trường hợp :Nếu source 16 bít lệnh DIV lấy nội dung cặp ghi DX : AX chia cho toán hạng source , thương số lưu AX , dư số lưu DX Ví dụ : Mov AX , 0234h Mov BL , 10h DIV BL ; AL = 23h , AH = 04h Mov AX , 1234h Mov DX , 0567h Mov BX , 100h DIV BX ; AX = 567h , DX = 0234h Ghi : Muốn in số >= kí số chia liên tiếp số cho 10 đến thương số = Sau phép chia cất dư số vào stack , sau thương số = muốn in ta lấy gía trị đỉnh Stack đưa hình 6.3.2 Các lệnh chuyển điều khiển a So sánh * Cú pháp: CMP < Left >, < Right > Left : Là ghi hay nhớ Right : Là ghi hay nhớ hay trực Ví dụ : CMP AL,0Dh * Cơng dụng : Dùng để so sánh toán hạng Left toán hạng Right Lệnh Assemble lấy toán hạng Left trừ toán hạng Right kết lưu cờ mà không thay đổi nội dung hai toán hạng Kết phép so sánh : a) Đối với số không dấu : 72 CỜ ZF Left > Right CF Left = Right Left < Right 0 b) Đối Với Số Có Dấu : CỜ ZF OF Left > Right SF Left = Right Left < Right 0/1 0/1 Ví dụ : 0 /0 0/1 Mov AX , 6000h CMP AX , -7000h 6000h - ( -7000h ) b Lệnh lặp Lệnh Loop : * Cú pháp : Loop * Công dụng : Dùng để lặp vòng Nếu ghi CX khác lệnh Loop chuyển điều khiển đến lệnh kế sau nhãn gỉam ghi CX đơn vị Nếu CX=0 lệnh nằm phía sau lệnh Loop thực thi Ví dụ : Mov AH , 01h Mov CX , Lặp : 73 Loop lặp Nhóm Lệnh Lặp Có Điều Kiện : a LoopE / LoopZ Lặp CX khác ZF = b LoopNE / LoopNZ < Nhãn > Lặp CX khác ZF = Ví dụ : Viết chương trình nhập từ bàn phím chuỗi tối đa 80 kí tự Sau tìm kí tự chữ 'a' chuỗi vừa nhập vào , in kết Code SEGMENT ASSUME ORG CS : Code , DS : Code 100h Begin : Mov AH , 09h Mov DX , Offset Int 21h Mov DX , Offset Maxtype Mov AH , 0Ah Int 21h Mov BX , Offset Len Mov CL , [ BX ] Mov CH , Mov BX , Offset Buffer - Mov AL , 'a' INC BX Lặp: CMP AL , [ BX ] LoopNE JE JMP Lặp thấy không thấy 74 mess1 Thấy: Mov AH , 09h Mov DX , Offset mess2 Int 21h JMP thoat Mov AH , 09h Mov DX , Offset mess3 Int 21h Int 20h Không thấy : thoat : mess3 DB ' Không tìm thấy $' mess2 DB ' Đã tìm thấy $' mess1 DB ' Nhập chuỗi (< 80 ) kí tự ' Maxtype DB 81 Len DB Buffer DB 81 Dup( ? ) Code ENDS END Begin c Lệnh nhảy Lệnh nhảy không điều kiện Cú pháp : JMP < Nhãn > Lệnh nhảy có điều kiện a) Nhóm Lệnh Nhảy Dùng Cho Số Không Dấu LỆNH JA JAE JNA JNAE JB ĐIỀU KIỆN (>) (>=) (=) JNG (