Bài giảng Kiến trúc máy tính (Bản hay)

Ví dụ 6: Viết đoạn chương trình để chia 6H cho 3H, dùng thanh ghi CL.

 MOV AX, 0006H ; AX  6H

 MOV CL, 03H ; CL  3H

 DIV CL ; AH  00H (số dư), AL chứa 02H (thương số)

 Chú ý: 6H được đưa vào thành 0006H để lấp đầy toàn bộ thanh ghi AX. Như vậy các byte trọng số cao của AX sẽ bị xoá để tránh bị lỗi.

􀂄 ABSOLUTE Lấy trị tuyệt đối toán hạng

􀂄 NEGATE Đổi dấu toán hạng (lấy bù 2)

􀂄 INCREMENT Tăng toán hạng thêm 1

􀂄 DECREMENT Giảm toán hạng đi 1

􀂄 COMPARE Trừ hai toán hạng để lập cờ

AND Thực hiện phép AND hai toán hạng

OR Thực hiện phép OR hai toán hạng

 XOR Thực hiện phép XOR hai toán hạng

 NOT Đảo bit của toán hạng (lấy bù 1)

 TEST Thực hiện phép AND hai toán hạng

để lập cờ

 

ppt152 trang | Chia sẻ: trungkhoi17 | Lượt xem: 387 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiến trúc máy tính (Bản hay), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ố thực6.515Các phép tính logic31Lệnh rẽ nhánh201.5So sánh và dịch ở dữ liệu16.82ABCBDIF: tần suất xuất hiện lệnh, CPI: số chu kỳ.  : thời gian một chu kỳ máyCho  = 10 ns, Tính MIPs = ?9/8/202129Bài giảng kiến trúc máy tính Quan hệ giữa MIPS và CPI Với CPI = 4Thời gian thực hiện 1 CKThời gian thực hiện 1 CKn CK thực hiện Thời gian thực hiện chương trình TCRCRCR EI *ET CPI ET EI *9/8/202130Bài giảng kiến trúc máy tính I.3. Toán logic, đại số booleanĐại số Boole sử dụng các biến logic và phép toán logic􀂄 Biến logic có thể nhận giá trị 1 (TRUE) hoặc 0 (FALSE)􀂄 Phép toán logic cơ bản là AND, OR và NOTvới ký hiệu như sau:􀂄 Thứ tự ưu tiên: NOT > AND > OR􀂄 Các phép toán NAND, NOR, XOR:9/8/202131Bài giảng kiến trúc máy tính Phép toán đại số Boole 9/8/202132Bài giảng kiến trúc máy tính Các đồng nhất thức của đại số Boole 9/8/202133Bài giảng kiến trúc máy tính Mạch lôgic F(x1, x2, , xn)x2xn-1xnMột số đường vào (dẫn tín hiệu vào) và chỉ có một đường ra (phát tín hiệu ra). Giả sử các tín hiệu vào x­1, x2, , xn (ta gọi là đầu vào hay input) cũng như tín hiệu ra F (đầu ra hay output) đều chỉ có hai trạng thái khác nhau, tức là mang một bit thông tin, mà ta ký hiệu là 0 và 1.Một thiết bị với các đầu vào và đầu ra mang giá trị 0, 1 như vậy là một mạch lôgic.Đầu ra của một mạch lôgic là một hàm Boole F của các đầu vào x­1, x2, , xn. Ta nói mạch lôgic trong hình trên thực hiện hàm F.Các mạch lôgic được tạo thành từ một số mạch cơ sở, gọi là cổng lôgic. Các cổng lôgic sau đây thực hiện các hàm phủ định, hội và tuyển.9/8/202134Bài giảng kiến trúc máy tính 9/8/202135Bài giảng kiến trúc máy tính 9/8/202136Bài giảng kiến trúc máy tính 3.1.1. Cổng NOT Cổng NOT thực hiện hàm phủ định. Cổng chỉ có một đầu vào. Đầu ra F(x) là phủ định của đầu vào x.Chẳng hạn, xâu bit 100101011 qua cổng NOT cho xâu bit 011010100. xF(x)=Trong các trường hợp khác.xyx3.1.2. Cổng AND Cổng AND thực hiện hàm hội. Đầu ra F(x,y) là hội (tích) của các đầu vào.F(x,y,z)=xyz F(x,y)=xy3.1.3. Cổng OR Cổng OR thực hiện hàm tuyển (tổng). Đầu ra F(x,y) là tuyển (tổng) của các đầu vào.F(x,y)=x+yxy9/8/202137Bài giảng kiến trúc máy tính Mạch tổ hợp Mạch tổ hợp là mạch logic trong đó tín hiệu ra chỉ phụ thuộc tín hiệu vào ở thời điểm hiện tại.􀂄 Là mạch không nhớ và được thực hiệnbằng các cổng logic cơ bản􀂄 Mạch tổ hợp có thể được định nghĩatheo ba cách:􀂄 Bảng thật􀂄 Dạng sơ đồ􀂄 Phương trình Boole9/8/202138Bài giảng kiến trúc máy tính Xây dựng mạch lôgicXây dựng một mạch lôgic thực hiện hàm Boole cho bởi bảng sau. xyzF(x,y,z)00000011010001101000101011011111Theo bảng này, hàm F có dạng tổng (tuyển) chuẩn tắc hoàn toàn là:9/8/202139Bài giảng kiến trúc máy tính Bộ dồn kênh (Multiplexer-MUX)9/8/202140Bài giảng kiến trúc máy tính Bộ dồn kênh (Multiplexer-MUX) 9/8/202141Bài giảng kiến trúc máy tính Bộ phân kênh (Demultiplexer – DeMUX)Data inputS0 S1oo o1 o2 o30 0I 0 0 00 10 I 0 0 00 0 I 010 0 0 I 9/8/202142Bài giảng kiến trúc máy tính 9/8/202143Bài giảng kiến trúc máy tính Bộ giải mã (Decoder) Bộ giải mã chọn một đầu ra tương ứng với một tổ hợp của N đầu vào.9/8/202144Bài giảng kiến trúc máy tính Bộ cộng (Adder) Bộ bán tổng (Half-adder)􀂄 Cộng hai bit tạo ra bit tổng và bit nhớ Bộ toàn tổng (Full-adder)􀂄 Cộng 3 bit􀂄 Cho phép xây dựng bộ cộng N-bit9/8/202145Bài giảng kiến trúc máy tính III. Các phương pháp vào ra dữ liệu của máy tính III.1. Phương pháp thăm dò trạng thái thiết bị ngoại viCPU sẽ liên tục gửi các tín hiệu hỏi xem có thiết bị nào sẵn sàng gửi DL cho mình hay không. Nếu có một thiết bị ngoại vi nào đó muốn trao đổi DL với CPU thì nó sẽ gửi lại tín hiệu sẵn sàng trao đổi. Khi đó CPU sẽ thực hiện việc trao đổi DL với thiết bị ngoại vi này.III.2. Phương pháp sử dụng ngắtCPU vẫn làm công việc của mình, chỉ khi nào có một thiết bị ngoại vi hay một thành phần nào đó của má tính có yêu cầu trao đổi dữ liệu với CPU thì thiết bị ngoại vi này sẽ gửi một yêu cầu ngắt tới CPU, khi đó CPU sẽ tạm dừng công việc hiện tại để quay ra trao đổi dữ liệu với thiết bị ngoại vi này. Trao đổi dữ liệu xong, CPU quay trở lại thực hiện tiếp công việc đang làm dở trước đó.III.3. Phương pháp truy nhập bộ nhớ trực tiếp DMAThường được sử dụng khi có yêu cầu trao đổi dữ liệu lớn giữa CPU và thiết bị ngoại vi. CPU trao quyền quản lý cho bộ điều khiển truy nhập trực tiếp, lúc này việc trao đổi dữ liệu giữa thiết bị ngoại vi và bộ nhớ chính sẽ do bộ điều khiển này thực hiện.III.4. Phương pháp sử dụng kênh dữ liệuXây dựng các đường bus dữ liệu riêng, nối trực tiếp thiết bị ngoại vi và bộ nhớ chính, mọi hế thống bus lại có một bộ điều khiển riêng được gọi là kênh dữ liệu.9/8/202146Bài giảng kiến trúc máy tính CII Thiết kế tập lệnh2.1. Mô hình lập trình của máy tính2.2. Các đặc trưng của lệnh máy2.3. Các kiểu toán hạng 2.4. Các kiểu thao tác của lệnh2.5. Các phương pháp định địa chỉ2.6. Khái niệm về lập trình hợp ngữ2.7. RISC2.8. Thứ tự các byte trong bộ nhớ chính2.9. Vídụ kiến trúc tập lệnh9/8/202147Bài giảng kiến trúc máy tính instructioninstruction data dataMainmemory012n-2n-1 . .Excution unit bufferPC Program counterIR Instruction registerMAR Memory address registerMBR Memory buffer register I/O Input/output address registerI/O Input/output buffer register9/8/202148Bài giảng kiến trúc máy tính 9/8/202149Bài giảng kiến trúc máy tính 9/8/202150Bài giảng kiến trúc máy tính 9/8/202151Bài giảng kiến trúc máy tính 9/8/202152Bài giảng kiến trúc máy tính 9/8/202153Bài giảng kiến trúc máy tính 9/8/202154Bài giảng kiến trúc máy tính 9/8/202155Bài giảng kiến trúc máy tính 9/8/202156Bài giảng kiến trúc máy tính 9/8/202157Bài giảng kiến trúc máy tính Giới thiệu về tập lệnh Mỗi bộ xử lý có một tập lệnh xác địnhTập lệnh thường có hàng chục đến hàng trăm lệnhMỗi lệnh là một chuỗi số nhị phân mà bộ xửlý hiểu được để thực hiện một thao tác xác định.Các lệnh được mô tả bằng các ký hiệu gợi nhớ - chính là các lệnh của hợp ngữ9/8/202158Bài giảng kiến trúc máy tính Dạng lệnh, kích thước mã lệnh Một lệnh mô tả bằng mã nhị phân có thể dài từ 1 đến 6 byte. Cấu trúc chung của một mã lệnh tuân theo sơ đồ sau:PrefixOPcodeOperandĐịa chỉ trực tiếpPrefix (Tiền tố) đi trước mã lệnh. Phần này có thế có, có thể không. Ví dụ tiền tố 3Eh báo hiệu vô hiệu hóa đoạn DS.Operation code (Mã toán) chỉ ra các thao tác mà CPU cần thực hiện, phân biệt đó là lệnh gì. Đối với CPU mã lệnh là một chuỗi các bit 0, 1. Ví dụ với lệnh dịch chuyển MOV có mã toán là 100010.Toán hạng (operand) dùng để xác định những đối tượng mà ở đó phép toán được thực hiện (nội dung của thanh ghi hay bộ nhớ). Các toán hạng thường được ngăn cách nhau bởi dấu phẩy. Toán hạng có thể có hoặc không. Ví dụ lệnh công hay nhân hai số hạng với nhau yêu cầu phải có hai toán hạng, lệnh dịch chuyển cần một toán hạng, lệnh xóa cờ không cần toán hạng nào.9/8/202159Bài giảng kiến trúc máy tính Mô tả lệnh Lệnh máy là mã nhị phân Để dễ hiểu và dễ nhớ đối với con người, người ta mô tả lệnh bằng các ký hiệu gợi nhớ Ví dụ: ADD, SUB, LOADToán hạng có thể được mô tả như sau: ADD A,B9/8/202160Bài giảng kiến trúc máy tính II. Số lượng các lệnh cho VXLKhi thiết kế một hệ lệnh cho bộ VXL nảy sinh một số vấn đề sau:Số lượng lệnh là bao nhiêu.Số lượng tham số trong hệ lệnh là bao nhiêu.Phân chia các lệnh theo dạng nào?Để thực hiện việc mã hóa các lệnh người ta sử dụng một dãy số nhị phân. Độ dài của dãy số này sẽ qui định số lượng các lệnh mà bộ xử lý có thể xử lý được.9/8/202161Bài giảng kiến trúc máy tính Các kiểu lệnh Xử lý dữ liệuLưu trữ dữ liệu (bộ nhớ chính)Vận chuyển dữ liệu (vào-ra)Điều khiển luồng dữ liệu9/8/202162Bài giảng kiến trúc máy tính Số lượng địa chỉ toán hạng trong lệnhBa địa chỉ toán hạng:2 toán hạng nguồn, 1 toán hạng đíchVí dụ c = a + bTừ lệnh dài vì phải mã hoá địa chỉ cho cảba toán hạng Được sử dụng trên các bộ xử lý tiên tiến9/8/202163Bài giảng kiến trúc máy tính Số lượng địa chỉ toán hạng trong lệnh Hai địa chỉ toán hạng: Một toán hạng vừa là toán hạng nguồn vừa là toán hạng đích; toán hạng còn lại là toán hạng nguồn ví dụ a = a + b Giá trị cũ của 1 toán hạng nguồn bị mất vì phải chứa kết quả Rút gọn độ dài từ lệnh Phổ biến Một địa chỉ toán hạng: Một toán hạng được chỉ ra trong lệnh Một toán hạng là ngầm định thường là thanh ghi (thanh chứa –accumulator) Được sử dụng trên các máy ở các thế hệ trước9/8/202164Bài giảng kiến trúc máy tính Đánh giá về số địa chỉ toánhạngNhiều địa chỉ toán hạng„ Các lệnh phức tạp hơn„ Cần nhiều thanh ghi„ Chương trình có ít lệnh hơn„ Nhận lệnh và thực hiện lệnh chậm hơn„ Ít địa chỉ toán hạng„ Các lệnh đơn giản hơn„ Cần ít thanh ghi„ Chương trình có nhiều lệnh hơn„ Nhận lệnh và thực hiện lệnh nhanh hơn9/8/202165Bài giảng kiến trúc máy tính 0 địa chỉ toán hạng Các toán hạng đều được ngầm định Sử dụng StackVí dụ: push a push b add pop ccó nghĩa là : c = a+b􀂄 không thông dụng9/8/202166Bài giảng kiến trúc máy tính 2.3. Các kiểu toán hạng􀂄 Địa chỉ􀂄 Số􀂄 Số nguyên􀂄 Số dấu phẩy động􀂄 Ký tự􀂄 Ví dụ: mã ASCII􀂄 Dữ liệu logic􀂄 Các bit hoặc các cờ2.4. Các kiểu thao tác của lệnh􀂄 Chuyển dữ liệu􀂄 Xử lý số học với số nguyên􀂄 Xử lý logic􀂄 Điều khiển vào-ra􀂄 Chuyển điều khiển (rẽ nhánh)􀂄 Điều khiển hệ thống9/8/202167Bài giảng kiến trúc máy tính Đánh giá về số địa chỉ toán hạng Nhiều địa chỉ toán hạng􀂄 Các lệnh phức tạp hơn􀂄 Cần nhiều thanh ghi􀂄 Chương trình có ít lệnh hơn􀂄 Nhận lệnh và thực hiện lệnh chậm hơn Ít địa chỉ toán hạng􀂄 Các lệnh đơn giản hơn􀂄 Cần ít thanh ghi􀂄 Chương trình có nhiều lệnh hơn􀂄 Nhận lệnh và thực hiện lệnh nhanh hơn9/8/202168Bài giảng kiến trúc máy tính Các vấn đề của thiết kế tập lệnh (1) Về thao tác Bao nhiêu thao tác ? Các thao tác nào ? Mức độ phức tạp của các thao tác ?􀂄 Các kiểu dữ liệu􀂄 Các khuôn dạng lệnh Độ dài của trường mã thao tác Số lượng địa chỉ toán hạng9/8/202169Bài giảng kiến trúc máy tính 􀂄 Các thanh ghi Số thanh ghi của CPU được sử dụng Các thao tác nào được thực hiện trên các thanh ghi ?􀂄 Các phương pháp định địa chỉ (xét sau)(addressing modes)􀂄 RISC hay CISC (xét sau) Reduced Instruction Set Computing Complex Instruction Set Computing9/8/202170Bài giảng kiến trúc máy tính Các lệnh chuyển dữ liệu 􀂄 MOV Copy dữ liệu từ nguồn đến đích MOVE đích, nguồnTrong đó toán hạng đích và gốc có thể tìm theo các địa chỉ khác nhau, nhưng phải có cùng độ dài và không được phép đồng thời là 2 ô nhớ hoặc 2 thanh ghi đoạn. Ví dụ: MOV 100H, AX MOV AX, BX MOV AX, 0FFFFH 􀂄 LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý􀂄 STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ􀂄 EXCHANGE Trao đổi nội dung của nguồn và đích XCHG Đích, Nguồn ví dụ : XCHG AH, AL ; tráo nội dung AH và AL. XCHG AL, [BX] ; tráo nội dung AL với ô nhớ có địa chỉ DS:BX.9/8/202171Bài giảng kiến trúc máy tính 􀂄 CLEAR Chuyển các bit 0 vào toán hạng đích􀂄 SET Chuyển các bit 1 vào toán hạng đích􀂄 PUSH Cất nội dung toán hạng nguồn vào ngăn xếp PUSH nguồn Ví dụ: PUSH BX; cất BX vào ngăn xếp, tại vị trí do SP chỉ ra.􀂄 POP Lấy nội dung đỉnh ngăn xếp đưa đến toán hạng đích POP Đích ví dụ POP DX lấy 2 byte từ đỉnh ngăn xếp, đưa vào DX. 9/8/202172Bài giảng kiến trúc máy tính Các lệnh số học 􀂄 ADD Cộng hai toán hạng/ SUBTRACT Trừ hai toán hạng ADD đích, nguồn SUB đích, nguồn Mô tả: ADD: Đích  Đích + Nguồn SUB : Đích  Đích -NguồnVí dụ: ADD AX, BX ; AX  AX+BX SUB CL, AL ; CL  CL - AL SUB AX, 0405H ; AX  AX - 0405H.Ví dụ 2: Viết đoạn chương trình ngôn ngữ assembly để cộng 5H với 3H, dùng các thanh ghi AL, BL. MOV AL, 05H ; AL  05H MOV BL, 03H ; BL  03H ADD AL, BL ; AL  05H+03H =08H MOV 100H, AL ; Di chuyển kết quả từ AL vào vị trí nhớ DS:100H 􀂄9/8/202173Bài giảng kiến trúc máy tính MULTIPLY Nhân hai toán hạng/DIVIDE Chia hai toán hạngKhi dùng lệnh nhân, số được nhân phải được chuyển vào thanh ghi AX hoặc AL. Còn số nhân thì có thể chuyển vào thanh ghi khác bất kỳ hoặc một địa chỉ nhớ.Ví dụ: MUL BX ; số nhân nằm trong thanh ghi BX MUL MEM1 ; số nhân nằm trong địa chỉ nhớ mang nhãn MEM1Khi hai byte nhân với nhau thì kết quả được gửi lưu vào thanh ghi AX. Ví dụ Viết đoạn chương trình nhân 5H với 3H, dùng thanh ghi CL. MOV AL, 05H ; AL  05H (số được nhân) MOV CL, 03H ; CL  03H (số nhân) MUL CL ; AL  0FH (kết quả) MOV MEM1, AL ; chuyển kết quả (0FH) từ AL vào vị trí nhớ có nhãn MEM1.9/8/202174Bài giảng kiến trúc máy tính Ví dụ 6: Viết đoạn chương trình để chia 6H cho 3H, dùng thanh ghi CL. MOV AX, 0006H ; AX  6H MOV CL, 03H ; CL  3H DIV CL ; AH  00H (số dư), AL chứa 02H (thương số) Chú ý: 6H được đưa vào thành 0006H để lấp đầy toàn bộ thanh ghi AX. Như vậy các byte trọng số cao của AX sẽ bị xoá để tránh bị lỗi.9/8/202175Bài giảng kiến trúc máy tính 􀂄 ABSOLUTE Lấy trị tuyệt đối toán hạng􀂄 NEGATE Đổi dấu toán hạng (lấy bù 2)􀂄 INCREMENT Tăng toán hạng thêm 1􀂄 DECREMENT Giảm toán hạng đi 1􀂄 COMPARE Trừ hai toán hạng để lập cờ9/8/202176Bài giảng kiến trúc máy tính Các lệnh logicAND Thực hiện phép AND hai toán hạngOR Thực hiện phép OR hai toán hạng XOR Thực hiện phép XOR hai toán hạng NOT Đảo bit của toán hạng (lấy bù 1) TEST Thực hiện phép AND hai toán hạngđể lập cờ9/8/202177Bài giảng kiến trúc máy tính Các lệnh logicMinh hoạ các lệnh AND, OR, XOR􀂄 Giả sử có hai thanh ghi chứa dữ liệu như sau: (R1) = 1010 1010 (R2) = 0000 1111􀂄 R1 = (R1) AND (R2) = 0000 1010Phép toán AND dùng để xoá một số bit và giữ nguyên một số bit còn lại của toán hạng.􀂄 R1 = (R1) OR (R2) = 1010 1111Phép toán OR dùng để thiết lập một số bit và giữ nguyên một số bit còn lại của toán hạng.Ví dụ : AND BL, 0FH ; che 4 bit cao của BL. OR BL, 30H ; lập bit b4 và b5 của BL lên 1.􀂄 R1 = (R1) XOR (R2) = 1010 0101Phép toán XOR dùng để đảo một số bit và giữ nguyên một số bit còn lại của toán hạng.9/8/202178Bài giảng kiến trúc máy tính Các lệnh logic (tiếp) SHIFT Dịch trái (phải) toán hạngROTATE Quay trái (phải) toán hạngCác lệnh vào ra chuyên dụngINPUT Copy dữ liệu từ một cổng xác định đưa đến đíchOUTPUT Copy dữ liệu từ nguồn đến một cổng xác định9/8/202179Bài giảng kiến trúc máy tính Các lệnh chuyển điều khiểnJUMP (BRANCH) Lệnh nhảy không điều kiện:􀂄 nạp vào PC một địa chỉ xác địnhJUMP CONDITIONAL Lệnh nhảy có điều kiện:􀂄 điều kiện đúng, nạp vào PC một địa chỉ xác định􀂄 điều kiện sai, không làm gì cảVí dụ 1: CMP AL, 10H ; so sánh AL với 10H. JA MEM1 ; nhảy đến nhãn MEM1 nếu AL cao hơn 10H. JB MEM2 ;nhảy đến nhãn MEM2 nếu AL thấp hơn 10H CALL Lệnh gọi chương trình con:􀂄 Cất nội dung của PC (địa chỉ trở về) ra một vị trí xác định (thường ở Stack)􀂄 Nạp vào PC địa chỉ của lệnh đầu tiên của chương trình con􀂄 RETURN Lệnh trở về từ chương trình con:􀂄 Khôi phục địa chỉ trở về trả lại cho PC để trở về chương trình chính9/8/202180Bài giảng kiến trúc máy tính Lệnh rẽ nhánh không điều kiện􀂄 Chuyển tới thực hiện lệnhở vị trí có địa chỉ XXX:PC = XXX9/8/202181Bài giảng kiến trúc máy tính Lệnh rẽ nhánh có điều kiện􀂄 Trong lệnh có kèm theo điều kiện􀂄 Kiểm tra điều kiện trong lệnh:􀂄 Nếu điều kiện đúng chuyển tới thực hiện lệnh ở vị trí có địa chỉ XXX,PC = XXX􀂄 Nếu điều kiện sai chuyển sang thực hiện lệnh_kế_tiếp􀂄 Điều kiện thường được kiểm tra thông qua các cờ􀂄 Có nhiều lệnh rẽ nhánh có điều kiện9/8/202182Bài giảng kiến trúc máy tính Lệnh CALL và RETURN Lệnh gọi chương trình con: lệnh CALL􀂄 Cất nội dung PC (chứa địa chỉ của lệnh_kế_tiếp) ra Stack􀂄 Nạp vào PC địa chỉ của lệnh đầu tiên của chương trình con được gọi􀃆 Bộ xử lý được chuyển sang thực hiện chương trình con tương ứng Lệnh trở về từ chương trình con: lệnh RETURN􀂄 Lấy địa chỉ của lệnh_kế_tiếp được cất ở Stack nạp trả lại cho PC 􀃆 Bộ xử lý được điều khiển quay trở về thực hiện tiếp lệnh nằm sau lệnh CALL9/8/202183Bài giảng kiến trúc máy tính 9/8/202184Bài giảng kiến trúc máy tính Các lệnh điều khiển hệ thống􀂄 HALT Dừng thực hiện chương trình􀂄 WAIT Tạm dừng thực hiện chương trình,lặp kiểm tra điều kiện cho đến khithoả mãn thì tiếp tục thực hiện􀂄 NO OPERATION Không thực hiện gì cả􀂄 LOCK Cấm không cho xin chuyển nhượngbus􀂄 UNLOCK Cho phép xin chuyển nhượng bu9/8/202185Bài giảng kiến trúc máy tính Khái niệm về định địa chỉ (addressing)Các phương pháp định địa chỉ 9/8/202186Bài giảng kiến trúc máy tính 9/8/202187Bài giảng kiến trúc máy tính 9/8/202188Bài giảng kiến trúc máy tính 9/8/202189Bài giảng kiến trúc máy tính 9/8/202190Bài giảng kiến trúc máy tính 9/8/202191Bài giảng kiến trúc máy tính 9/8/202192Bài giảng kiến trúc máy tính 9/8/202193Bài giảng kiến trúc máy tính V. Số lượng các tham số trong một lệnh V.1. Hệ lệnh không có tham số còn gọi là máy ngăn xếp (Stack Machine)Sử dụng push và popƯu điểm: Đây là loại đơn giản, dễ chế tạoNhược điểm: Các lệnh không cho phép sử dụng các thanh ghi. Do vậy tốc độ chậm.Các qui trình tính toán không được tối ưu và người lập trình khó thực hiện 9/8/202194Bài giảng kiến trúc máy tính Hệ lệnh một tham số Loại máy sử dụng một thanh ghi dùng chung đóng vai trò làm tham số thứ hai cho hệ thống. Thanh ghi dùng chung này được gọi là thanh ghi tích lũy (accumulator Reg). Hệ lệnh này sử dụng hai lệnh LOAD – ACC: Nạp dữ liệu vào thanh ghi tích lũy.STORE – ghi dữ liệu từ thanh ghi tích lũy ra bộ nhớ.Ví dụ: Y= X+ZLOAD – ACC X : Nạp X vàoADD Z : Được ghi vào thanh ghi tích lũySTORE Y : Đưa Y từ thanh ghi tích lũy ra bộ nhớ.Nhược điểm: cho phép sử dụng ít thanh ghi nên trong quá trình tính toán hều hết phải truy nhập bộ nhớ.Thường sử dụng địa chỉ hóa trực tiếp nhưng gây hạn chế vùng không gian bộ nhớ truy nhập thấp 9/8/202195Bài giảng kiến trúc máy tính V.3. Các hệ lệnh có từ hai hay ba tham sốThường sử dụng hai hay ba thanh ghi. Nếu lệnh có 2 tham số, thì thường một tham số vừa đóng vai trò là nguồn vừa đóng vai trò là đích.Ví dụ Y = X+ ZLOAD R1, X (nhập X vào thanh ghi 1)LOAD R2, Z (nhập Z vào thanh ghi 2)ADD R1, R2STORE Y, R1Ưu điểm: sử dụng ít phép truy nhập bộ nhớ khi thực hiện lệnhDạng lệnh thường ngắn gọn vì người ta cần ít bit để địa chỉ hóa thanh ghi.Các lệnh thường có độ dài cố định và chúng có thời gian thực hiện như nhau.Các chương trình sẽ dễ dàng sinh ra các mã lệnh tối ưu.Nhược điểm: do phần lớn các lệnh đều phải truy nhập thanh ghi nên hạn chế trong việc áp dụng các phương pháp trong địa chỉ hóa.Phải dùng nhiều lệnh để thực hiện một thao tác đơn giản9/8/202196Bài giảng kiến trúc máy tính Ví dụ: f = (a- b)/(c+d*e) được thực hiện qua hệ lệnh hai, ba tham số như sauMOV AX, aSUB AX, bMOV DX, dMUL DX, eADD DX, cDIV DX, AX Ba tham số SUB Y,a,b MUL T,d,e ADD T,T,c DIV T,Y,T9/8/202197Bài giảng kiến trúc máy tính QUI TRÌNH THỰC HIỆN LỆNH Qui trình thực hiện một lệnh được chia làm 5 giai đoạn Lấy lệnh (Instruction fetch- IF)Giải mã lệnh (Instruction decording- ID)Nạp các tham số cho lệnh (Operands Fetch-OF)Xử lý lệnh (Excute - EX)Và ghi kết quả (Operand Write-OW) 9/8/202198Bài giảng kiến trúc máy tính QUI TRÌNH THỰC HIỆN LỆNH SƠ ĐỒ 1 Giải mãNạp tham sốThực hiện lệnhGhi kết quả Lấy lệnhGiao diện vào raThanh ghiKhối tính toánChứa dữ liệu, lệnhKhối điều khiển bus địa chỉ bus điều khiển bus dữ liệuBộ nhớLệnh, dữ liệu trong bộ nhớ nạp vào thanh ghi lệnh IR 1Khối điều khiển tiến hành giải mã và nhận biết lệnh2Khối ĐK lấy dữ liệu từ bộ nhớ tương ứng với các tham số của lệnh3Khối ĐK phát tín hiệu tới khối TT yêu cầu thực hiện phép toán trên toán hạng lấy về4Sau khi tính toán xong, kết quả lưu vào thanh ghi và chuyển ra bộ nhớ5Kết quảLệnhKết quảGiải mã lệnhGiải thích 9/8/202199Bài giảng kiến trúc máy tính 1011000 10002Giao diện vào raKhối tính toán bus Khối điều khiểnKết quảKết quảLệnh ‘+’ 101101 3+5=?Lệnh có mã 101101 được nạp vào thanh ghi lệnh IR 1Khối DK tiến hành giải mã và nhận biết lệnh 101101 là lệnh cộng (+) và sử dụng hai tham số là 3 và 52Khối ĐK lấy 3 =0112 , 5 =1012 từ bộ nhớ và lưu vào 2 thanh ghi AX, BX3Khối ĐK phát tín hiệu tới khối TT yêu cầu thực hiện phép toán ‘+’ trên hai thanh ghi AX và BX4Sau khi tính toán xong, KQ = 10002 lưu vào thanh ghi CX rồi chuyển ra bộ nhớ, và từ bộ nhớ chuyển ra màn hình 53 =0112AXIR 5 =1012Yêu cầu AX ‘+’ BXCX 10110101110002 88 Dữ liệuQUI TRÌNH THỰC HIỆN LỆNH Ví dụ minh họaBXBX1019/8/2021100Bài giảng kiến trúc máy tính VXL cổ điển tiến hành 5 giai đoạn trên một cách tuần tự, lệnh đầu tiên được nhận và thực hiện, sau đó đến lệnh tiếp theoNhược điểm : Tốc độ chậm, lãng phí tài nguyênQUI TRÌNH THỰC HIỆN LỆNHIF1ID1ID2EX1IF2EX2IF1ID1EX1IF2ID2EX2IF3ID3EX3VXL tiên tiến tiến hành xen kẽ các dòng lệnh, khi đang thực hiện một lệnh nhận về lệnh tiếp theoƯu điểm: Tốc độ nhanh, không lãng phí tài nguyênCải tiếnPhân loạiTuần tựPiepline9/8/2021101Bài giảng kiến trúc máy tính QUI TRÌNH THỰC HIỆN LỆNH MIMD-Single instruction multiple data- nhiều dòng chảy lệnh, nhiều dòng chảy dữ liệu (song song thực sự)3SISD-Single instruction single data- Một dòng chảy lệnh, một dòng chảy dữ liệu (tuần tự)1SIMD –Single instruction multiple data-Một dòng chảy lệnh, nhiều dòng chảy dữ liệu (ý tưởng song song)2 Các thế hệ máy tính và ứng dụng Dùng phổ biến, giải quyết các bài toán đơn giảnDùng trong ngân hàng, đặt chỗ hàng không, có nhiều giao dịch, yêu cầu xử lý nhanh chính xácGiải quyết bài toán phức tạp như dự báo thời tiết9/8/2021102Bài giảng kiến trúc máy tính Chương III Thiết kế bộ nhớI. Mô hình phân cấp bộ nhớI.1. Sự cần thiết của phân cấp bộ nhớ Trong quá trình thực hiện các chương trình người ta thống kê thời gian để truy nhập dữ liệu chiếm một phần rất lớn trong tổng thời gian thực hiện của toàn bộ chương trình. Đây chính là thời điểm thắt cổ chai của hệ thống (bottle neck). Vì thế người ta sẽ tìm cách để làm giảm tổng thời gian truy nhập bộ nhớ sao cho dữ liệu hầu như luôn sẵn sàng với Bộ xử lý.9/8/2021103Bài giảng kiến trúc máy tính I.2. Qui tắc chung của hệ thống phân cấp bộ nhớ Mối quan hệ về thời gian (Temporal Locality) : Người ta cho rằng các dữ liệu, các lệnh vừa được sử dụng thì tương lai sẽ được sử dụng tiếp. Vì thế người ta tìm cách để lưu các dữ liệu vào các lệnh này để có thể truy nhập trong tương lai.Mối quan hệ về không gian (Spatial Locality): Theo quan điểm này người ta cho rằng các lệnh và các dữ liệu nằm gần lệnh hoặc là dữ liệu vừa được sử dụng thì trong tương lai sẽ có thể được sử dụng, do vậy người ta phải tìm cách để lưu trữ hoặc nạp trước dữ liệu này.Mối quan hệ tuần tự (Sequential Locality): Người ta đã thống kê được rằng các lệnh trong chương trình hầu hết được thực hiện một cách tuần tự (70-80%), lệnh thực hiện rẽ nhánh và lặp (20-30%) vì thế người ta sẽ tìm cách để nạp hoặc lưu trữ các lệnh nằm trước hoặc sau lệnh đang thực hiện để cho quá trình truy nhập lênh này nhanh hơn.9/8/2021104Bài giảng kiến trúc máy tính Đưa ra mô hình phân cấp bộ nhớ:Trong mô hình phân cấp này người ta sẽ tìm cách để ghép nối các bộ nhớ có tốc độ truy cập nhanh kết hợp với các bộ nhớ có tốc độ truy cập thấp để sao cho tổng thời gian truy nhập được một mục dữ liệu hoặc một lệnh và tổng giá thành của bộ nhớ là thấp ProcessorMemory Level Mn-1Memory Level MnHighest level/costLowest level/cost9/8/2021105Bài giảng kiến trúc máy tính 9/8/2021106Bài giảng kiến trúc máy tính 1. Phần tử nhớ và bộ nhớ (memory cell)Là đơn vị nhỏ nhất được sử dụng để cấu tạo nên bộ nhớ mỗi phần tử nhớ này thường là một mạch Flip-Flop Sơ đồ cấu tạo của phần tử nhớ:Data inputMemoryCellData outputR/WSelect (CS chip select)Hình 3.3. Cấu tạo phần tử nhớ9/8/2021107Bài giảng kiến trúc máy tính Mỗi phần tử nhớ sẽ lưu trữ được một bit dữ liệu, để xây dựng thành bộ nhớ có các dung lượng cao hơn người ta phải kết nối các phần tử nhớ lại với nhau. Khi bộ nhớ cần thiết kế, có một từ nhớ là n bit suy ra phải kết nối n phần tử nhớ lại với nhau và các phần tử nhớ này phải có chung đường tín hiệu select. Khi đó, mỗi khi có tín hiệu lựa chọn thì tất cả các phần tử nhớ này sẽ được lựa chọn đồng thời. Ví dụ : Sơ đồ một bộ nhớ gồm có 4 ô nhớ, mỗi ô nhớ hai bit suy ra cần 8 cell.Nếu bộ giải mã có hai đầu vào và 4 đầu ra đặt là : LS 124.Nếu bộ giải mã có 3 đầu vào và 8 đầu ra đặt là : LS 138 9/8/2021108Bài giảng kiến trúc máy tính 9/8/2021109Bài giảng kiến trúc máy tính II. Xây dựng bộ nhớ Bước 1: Xác định số lượng các IC/ chip cần sử dụng để xây dựng bộ nhớ.A = Dung lượng bộ nhớ * số các bit đầu ra Dung lượng IC * số bit ra của ICBước 2: Xác định số lượng đường địa chỉ cần sử dụng cho bộ nhớ n1= {[log 2(dung lượng bộ nhớ)]}. Bước 3: Xác định số lượng đường địa chỉ cần sử dụng cho IC nhớ. n2 = [log2 (dung lượng IC)].Bước 4 : Xác định số lượng IC cần mở đồng thời : B = Bước 5: Thiết kế bộ nhớ giải mã gồm một số đầu vào hoặc đầu ra xác định. n1-n2 đầu vào. đầu ra.Bước 6: Vẽ hình.9/8/2021110Bài giảng kiến trúc máy tính Chú ýKhi vẽ hình nếu có nhiều IC hoặc nhiều phần giống nhau thì ta có thể vẽ đại diện cho những phần giống nhau đó.Các đường địa chỉ sử dụng trong hình vẽ thì được đánh số từ A0 trở đi. Ưu tiên các đường địa chỉ có chỉ số thấp để nối vào các IC nhớ, các đường địa chỉ có chỉ số cao thì nối vào bộ giải mã. Các đường dữ liệu được đánh số từ D0 đi, nếu ta muốn ghép nhiều đầu ra dữ liệu của các IC thì các đầu ra này phải được đánh số liên tiếp nhau. Ví dụ Do D7 và D8 D15. Khi thiết kế bộ giải mã ta phải tuân thủ các bước sau:Bước 1: Lập bảng chân lý.Bước 2: Lập hàm logic.Bước 3: Vẽ mạch.Trong trường hợp các bộ giải mã là quen thuộc (bộ giải mã 24, 38) thì ta không cần phải làm bước này.9/8/2021111Bài giảng kiến trúc máy tính Ví dụ minh họa Ví dụ 1Xây dựng bộ nhớ có dung lượng 1M * 8

Các file đính kèm theo tài liệu này:

  • pptbai_giang_kien_truc_may_tinh_ban_hay.ppt
Tài liệu liên quan