Slide bài giảng Kiến trúc máy tính

Trong hệ thống cluster, các máy tính độc lập được kết nối với nhau thông qua một hệ thống kết nối tốc độ cao (mạng tốc độ cao Fast Ethernet hay Gigabit) và hoạt động như một máy tính thống nhất. Mỗi máy trong hệ thống được xem như là một phần của cluster, được gọi là một nút (node).

ppt151 trang | Chia sẻ: aloso | Lượt xem: 4542 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Slide bài giảng Kiến trúc máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
KIẾN TRÚC MÁY TÍNH 2 tín chỉ Đối tượng sinh viên năm thứ 2 Chuyên ngành CNTT NỘI DUNG CHÍNH Gồm 5 chương Chương 1 Tổng quan Chương 2 Thiết kế hệ lệnh cho VXL Chương 3 Thiết kế bộ nhớ Chương 4 Giới thiệu một số KT hiện đại Chương 5 Tổ chức vào ra của máy tính Tài liệu tham khảo 1. William Stallings - Computer Organization and Architecture – Designing for Performance – 2003 (6th edition) 2. Behrooz Parhami - Computer Architecture: From Microprocessors to Supercomputers - 2005 3. David A. Patterson & John L. Hennessy -Computer Organization and Design: The Hardware/Software Interface – 2002 (third edition) 4. John L. Hennessy & David A. Patterson -Computer Architecture: A Quantitative Approach –2003 (third edition) Chương I Tổng quan I. Giới thiệu chung II. Kiến trúc máy tính tuần tự Vonneuman III. Các phương pháp vào ra dữ liệu của máy tính I. Giới thiệu chung 1.1. Máy tính và phân loại máy tính 1. Máy tính Máy tính (Computer) là thiết bị điện tử thực hiện các công việc sau: Nhận thông tin vào Xử lý thông tin theo dãy các lệnh được nhớ sẵn bên trong, Đưa thông tin ra. Dãy các lệnh nằm trong bộ nhớ để yêu cầu máy tính thực hiện công việc cụ thể gọi là chương trình (program) Máy tính hoạt động theo chương trình. I. Giới thiệu chung 2. Phân loại máy tính Phân loại truyền thống Máy vi tính (Microcomputers) Máy tính nhỏ (Minicomputers) Máy tính lớn (Mainframe Computers) Siêu máy tính (Supercomputers) Phân loại máy tính hiện đại Máy tính cá nhân (Personal Computers) Máy chủ (Server Computers) Máy tính nhúng (Embedded Computers) Máy tính cá nhân PC Là loại máy tính phổ biến nhất 􀂄 Các loại máy tính cá nhân: 􀂄 Máy tính để bàn (Desktop) 􀂄 Máy tính xách tay (Laptop) 􀂄 1981 IBM giới thiệu máy tính IBM-PC sử dụng bộ xử lý Intel 8088 􀂄 1984 Apple đưa ra Macintosh sử dụng bộ xử lý Motorola 68000 􀂄 Giá thành: hàng trăm đến hàng nghìn USD Máy chủ (Server) 􀂄 Thực chất là máy phục vụ 􀂄 Dùng trong mạng theo mô hình Client/Server (Khách hàng/Người phục vụ) 􀂄 Tốc độ và hiệu năng tính toán cao 􀂄 Dung lượng bộ nhớ lớn 􀂄 Độ tin cậy cao 􀂄 Giá thành: hàng nghìn đến hàng chục triệuUSD. Máy tính nhúng (Embedded Computer) Được đặt trong thiết bị khác để điều khiển thiết bị đó làm việc 􀂄 Được thiết kế chuyên dụng Ví dụ: 􀂄 Điện thoại di động 􀂄 Máy ảnh số 􀂄 Bộ điều khiển trong máy giặt, điều hoà nhiệt độ 􀂄 Router – bộ định tuyến trên mạng 􀂄 Giá thành: vài USD đến hàng trăm nghìn USD. 1.2. Kiến trúc máy tính Định nghĩa trước đây về kiến trúc máy tính: Cách nhìn logic của máy tính từ người lập trình (hardware/software interface) Kiến trúc tập lệnh (Instruction Set Architecture– ISA) Là định nghĩa hẹp Định nghĩa của Hennessy/ Patterson Kiến trúc máy tính bao gồm: Kiến trúc tập lệnh (Instruction Set Architecture):nghiên cứu máy tính theo cách nhìn của người lập trình (hardware/software interface). Tổ chức máy tính (Computer Organization): nghiên cứu thiết kế máy tính ở mức cao,chẳng hạn như hệ thống nhớ, cấu trúc bus, thiết kế bên trong CPU. Phần cứng (Hardware): nghiên cứu thiết kế logic chi tiết và công nghệ đóng gói của máy tính. Kiến trúc tập lệnh thay đổi chậm, tổ chức và phần cứng máy tính thay đổi rất nhanh. Ví dụ Các máy tính PC dùng các bộ xử lý Pentium III và Pentium 4: Cùng chung kiến trúc tập lệnh (IA-32) Có tổ chức khác nhau Kiến trúc tập lệnh Kiến trúc tập lệnh của máy tính bao gồm: Tập lệnh: tập hợp các chuỗi số nhị phân mã hoá cho các thao tác mà máy tính có thể thực hiện Các kiểu dữ liệu: các kiểu dữ liệu mà máy tính có thể xử lý Mô hình phân lớp của máy tính Phần cứng (Hardware): hệ thống vật lý của máy tính. 􀂄 Phần mềm (Software): các chương trình và dữ liệu. 1.3. Sự phát triển của của máy tính 1. Các thế hệ máy tính Thế hệ thứ nhất: Máy tính dùng đèn điện tử chân không (1950s) Thế hệ thứ hai: Máy tính dùng transistor (1960s) Thế hệ thứ ba: Máy tính dùng vi mạch SSI, MSI và LSI (1970s) Thế hệ thứ tư: Máy tính dùng vi mạch VLSI (1980s) Thế hệ thứ năm: Máy tính dùng vi mạch ULSI, SoC (1990s) Máy tính dùng đèn điện tử Nặng 30 tấn 18000 đèn điện tử và 1500 rơle 5000 phép cộng/giây Xử lý theo số thập phân Bộ nhớ chỉ lưu trữ dữ liệu Lập trình bằng cách thiết lập vị trí của các chuyển mạch và các cáp nối. Đèn điện tử Máy tính von Neumann Đó là máy tính IAS: Princeton Institute for Advanced Studies Được bắt đầu từ 1947, hoàn thành1952 Do John von Neumann thiết kế Được xây dựng theo ý tưởng “chương trình được lưu trữ” (stored-program concept) của von Neumann/Turing (1945) Đặc điểm chính của máy tính IAS Bao gồm các thành phần: đơn vị điều khiển, đơn vị số học và logic (ALU), bộ nhớ chính và các thiết bị vào-ra. Bộ nhớ chính chứa chương trình và dữ liệu Bộ nhớ chính được đánh địa chỉ theo từng ngăn nhớ, không phụ thuộc vào nội dung của nó. ALU thực hiện các phép toán với số nhị phân Đơn vị điều khiển nhận lệnh từ bộ nhớ, giải mã và thực hiện lệnh một cách tuần tự. Đơn vị điều khiển điều khiển hoạt động của các thiết bị vào-ra Trở thành mô hình cơ bản của máy tính John von Neumann và máy tính IAS Hãng IBM International Business Machine 􀂄 1953 - IBM 701 􀂄 Máy tính lưu trữ chương trình đầu tiên của IBM 􀂄 Sử dụng cho tính toán khoa học 􀂄 1955 – IBM 702 􀂄 Các ứng dụng thương mại Máy tính dùng transistor Máy tính PDP-1 của DEC (Digital Equipment Corporation) máy tính mini đầu tiên 􀂄 IBM 7000 􀂄 Hàng trăm nghìn phép cộng trong một giây. 􀂄 Các ngôn ngữ lập trình bậc cao ra đời. Máy tính dùng transistor Máy tính dùng vi mạch SSI, MSI và LSI Vi mạch (Integrated Circuit - IC): nhiều transistor và các phần tử khác được tích hợp trên một chip bán dẫn. 􀂄 SSI (Small Scale Integration) 􀂄 MSI (Medium Scale Integration) 􀂄 LSI (Large Scale Integration) 􀂄 VLSI (Very Large Scale Integration) (thế hệ thứ tư) 􀂄 ULSI (Ultra Large Scale Integration) (thế hệ thứ năm) 􀂄 SoC (System on Chip) 􀂄 Siêu máy tính xuất hiện: CRAY-1, VAX 􀂄 Bộ vi xử lý (microprocessor) ra đời 􀂄 Bộ vi xử lý đầu tiên 􀃆 Intel 4004 (1971). Máy tính dùng vi mạch VLSI/ULSI Các sản phẩm chính của công nghệ VLSI/ULSI: 􀂄 Bộ vi xử lý (Microprocessor): CPU được chế tạo trên một chip. 􀂄 Vi mạch điều khiển tổng hợp (Chipset): một hoặc một vài vi mạch thực hiện được nhiều chức năng điều khiển và nối ghép. 􀂄 Bộ nhớ bán dẫn (Semiconductor Memory): ROM, RAM 􀂄 Các bộ vi điều khiển (Microcontroller): máy tính chuyên dụng được chế tạo trên 1 chip. 2. Sự phát triển của bộ vi xử lý 1971: bộ vi xử lý 4-bit Intel 4004 􀂄 1972-1977: các bộ xử lý 8-bit 􀂄 1978-1984: các bộ xử lý 16-bit 􀂄 Khoảng từ 1985: các bộ xử lý 32-bit 􀂄 Khoảng từ 2000: các bộ xử lý 64-bit 􀂄 Các bộ xử lý đa lõi (multicores) 􀂄 Các bộ vi điều khiển (microcontroller) Pentium 􀂄 Siêu vô hướng 􀂄 Bus dữ liệu 64-bit 􀂄 Đa lệnh được thực hiện song song Pentium Pro 􀂄 Tăng cường tổ chức siêu vô hướng 􀂄 Dự đoán rẽ nhánh 􀂄 Phân tích luồng dữ liệu 􀂄 Suy đoán đông Pentium II 􀂄 Xử lý đồ họa, video & audio Pentium III 􀂄 Thêm các lệnh xử lý dấu phẩy động cho đồ họa 3D Pentium 4 􀂄 Tăng cường xử lý số dấu phẩy động vàmultimedia Duo Core: 2 bộ xử lý trên chip Core 2: Kiến trúc 64-bit 􀂄 Core 2 Quad – 3GHz – 820 triệu transistors 4 bộ xử lý trong 1chip Intel Pentium (32-bit) Multicores I.1. Phân loại kiến trúc máy tính Kiến trúc SISD (single instruction - single data, đơn dòng lệnh - đơn dòng dữ liệu) -Kiến trúc SIMD (Single Instruction Multiple Data, đơn dòng lệnh- đa dữ liệu) Dữ liệu Dữ liệu Dữ liệu Kiến trúc MIMD (Multiple Instruction Multiple Data, đa dòng lệnh- đa dữ liệu) I.2. Các thông số đo khả năng xử lý của máy tính Hiệu năng máy tính (performance) Đồng hồ xung nhịp hệ thống (Clock - CLK) CPI (Cycle Per Instruction): Số chu kỳ cần thiết để thực hiện một lệnh Trong đó: EI: số lệnh được thực hiện (executed instructions) ET: thời gian thực hiện lệnh (execution time) CR: tần số (clock rate) Ví dụ: Giả sử: Thực hiện lệnh A có CPI = 2, B có CPI = 3, C có CPI = 1, D có CPI = 4 Biết 1 CPI = 2ns (nano giây)  làm hết lệnh trên cần 26s MIPs (Million Instruction Per Second): Số triệu lệnh được thực hiện trong một giây IF: tần suất xuất hiện lệnh, CPI: số chu kỳ.  : thời gian một chu kỳ máy Cho  = 10 ns, Tính MIPs = ? Quan hệ giữa MIPS và CPI Với CPI = 4 Thời gian thực hiện 1 CK Thời gian thực hiện 1 CK n CK thực hiện Thời gian thực hiện chương trình T CR CR CR EI * ET CPI ET EI * 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à NOT với ký hiệu như sau: 􀂄 Thứ tự ưu tiên: NOT > AND > OR 􀂄 Các phép toán NAND, NOR, XOR: Phép toán đại số Boole Các đồng nhất thức của đại số Boole Mạch lôgic Mộ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. 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. Trong các trường hợp khác. x y x 3.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 3.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. x y 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ện bằng các cổng logic cơ bản 􀂄 Mạch tổ hợp có thể được định nghĩa theo ba cách: 􀂄 Bảng thật 􀂄 Dạng sơ đồ 􀂄 Phương trình Boole Xây dựng mạch lôgic Xây dựng một mạch lôgic thực hiện hàm Boole cho bởi bảng sau. Theo bảng này, hàm F có dạng tổng (tuyển) chuẩn tắc hoàn toàn là: Bộ dồn kênh (Multiplexer-MUX) Bộ dồn kênh (Multiplexer-MUX) Bộ phân kênh (Demultiplexer – DeMUX) Data input 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. 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-bit 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 vi CPU 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ắt CPU 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 DMA Thườ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ệu Xâ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. CII Thiết kế tập lệnh 2.1. Mô hình lập trình của máy tính 2.2. Các đặc trưng của lệnh máy 2.3. Các kiểu toán hạng 2.4. Các kiểu thao tác của lệnh 2.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. RISC 2.8. Thứ tự các byte trong bộ nhớ chính 2.9. Vídụ kiến trúc tập lệnh instruction instruction data data Mainmemory 0 1 2 n-2 n-1 …. …. Excution unit buffer PC Program counter IR Instruction register MAR Memory address register MBR Memory buffer register I/O Input/output address register I/O Input/output buffer register Giới thiệu về tập lệnh Mỗi bộ xử lý có một tập lệnh xác định Tập lệnh thường có hàng chục đến hàng trăm lệnh Mỗ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ữ 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: Prefix (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. 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, LOAD Toán hạng có thể được mô tả như sau: ADD A,B II. Số lượng các lệnh cho VXL Khi 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. Các kiểu lệnh Xử lý dữ liệu Lư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ệu Số lượng địa chỉ toán hạng trong lệnh Ba địa chỉ toán hạng: 2 toán hạng nguồn, 1 toán hạng đích Ví dụ c = a + b Từ 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ến 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ước Đánh giá về số địa chỉ toánhạ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ơn 0 địa chỉ toán hạng Các toán hạng đều được ngầm định Sử dụng Stack Ví dụ: push a push b add pop c có nghĩa là : c = a+b 􀂄 không thông dụng 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ống Đá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ơn 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ạng 􀂄 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 Computing Các lệnh chuyển dữ liệu 􀂄 MOV Copy dữ liệu từ nguồn đến đích MOVE đích, nguồn Trong đó 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. 􀂄 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. 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ồn Ví 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 􀂄 MULTIPLY Nhân hai toán hạng/DIVIDE Chia hai toán hạng Khi 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 MEM1 Khi 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. 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ờ Các lệnh logic 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ờ Các lệnh logic Minh 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 1010 Phé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 1111 Phé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 0101 Phé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. Các lệnh logic (tiếp) SHIFT Dịch trái (phải) toán hạng ROTATE Quay trái (phải) toán hạng Các lệnh vào ra chuyên dụng INPUT Copy dữ liệu từ một cổng xác định đưa đến đích OUTPUT Copy dữ liệu từ nguồn đến một cổng xác định Các lệnh chuyển điều khiển JUMP (BRANCH) Lệnh nhảy không điều kiện: 􀂄 nạp vào PC một địa chỉ xác định JUMP 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í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 = XXX 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ện 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 CALL 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 khi thoả 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ượng bus 􀂄 UNLOCK Cho phép xin chuyển nhượng bu Khái niệm về định địa chỉ (addressing) Các phương pháp định địa chỉ 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ạo Nhượ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 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+Z LOAD – ACC X : Nạp X vào ADD Z : Được ghi vào thanh ghi tích lũy STORE 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 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+ Z LOAD R1, X (nhập X vào thanh ghi 1) LOAD R2, Z (nhập Z vào thanh ghi 2) ADD R1, R2 STORE Y, R1 Ưu điểm: sử dụng ít phép truy nhập bộ nhớ khi thực hiện lệnh Dạ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ản Ví dụ: f = (a- b)/(c+d*e) được thực hiện qua hệ lệnh hai, ba tham số như sau MOV AX, a SUB AX, b MOV DX, d MUL DX, e ADD DX, c DIV DX, AX Ba tham số SUB Y,a,b MUL T,d,e ADD T,T,c DIV T,Y,T 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) QUI TRÌNH THỰC HIỆN LỆNH SƠ ĐỒ 1 Giải mã Nạp tham số Thực hiện lệnh Ghi kết quả Lấy lệnh Giao diện vào ra Thanh ghi Khối tính toán Chứa dữ liệu, lệnh Khối điều khiển bus địa chỉ bus điều khiển bus dữ liệu Kết quả Lệnh Kết quả Giải mã lệnh Giải thích 101 1000 10002 Giao diện vào ra Khối tính toán bus Khối điều khiển Kết quả Kết quả Lệnh ‘+’ 101101 3+5=? 3 =0112 AX IR 5 =1012 Yêu cầu AX ‘+’ BX CX 101101 011 10002 8 8 Dữ liệu QUI TRÌNH THỰC HIỆN LỆNH Ví dụ minh họa BX BX 101 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 theo Nhược điểm : Tốc độ chậm, lãng phí tài nguyên QUI TRÌNH THỰC HIỆN LỆNH VXL 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ên Cải tiến Phân loại Tuần tự Piepline QUI TRÌNH THỰC HIỆN LỆNH SISD-Single instruction single data- Một dòng chảy lệnh, một dòng chảy dữ liệu (tuần tự) 1 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ản Dù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ác Giải quyết bài toán phức tạp như dự báo thời tiết 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ý. 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. Đư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 Highest level/cost Lowest level/cost 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ớ: Hình 3.3. Cấu tạo phần 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 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 IC Bướ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. 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. Ví dụ minh họa Ví dụ 1 Xây dựng bộ nhớ có dung lượng 1M * 8bit từ IC 256K * 8bit. D0-D7 phụ thuộc vào dung lượng của 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 IC Bướ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ớ)]} n1 = [log 2 (2^ 20)] = 20 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)] n2 = [log 2 (2^ 18)] = 18 Bước 4 : Xác định số lượng IC cần mở đồng thời : B = = =1 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. Đầu vào n1- n2 = 20-18 = 2 Đầu ra =4 Bước 6: Vẽ hình. Sử dụng bộ giải mã LS 124. A0 - A17 RW CS Ví dụ 3 Thiết kế 512 K * 8bit, từ IC 256 K * 8 bit. n1 = [log 2 (2 ^19)] = 19 n2 = [log 2 (2 ^18)] = 18 B = 8/ 8 = 1 Đầu vào n1 -n2 =1 Đầu ra CS A18 CS0 CS1 1 0 1 0 1 1 0 1 RW A0 - A7 D0 - D7 CS A18 III. Bộ nhớ cache Bộ nhớ cache là bộ nhớ trung gian trong quá trình truyền dữ liệu giữa CPU và bộ nhớ chính nhằm làm tăng tốc độ xử lý của CPU. Cache hit là trường hợp dữ liệu mà CPU cần dùng đã có sẵn ở trong Cache, thay vì lấy dữ liệu ở bộ nhớ chính, CPU sẽ lấy dữ liệu ở cache (cache hit – trúng cache). Cache miss (trượt cache): Dữ liệu CPU cần không có trong cache. Tỷ số trúng cache : Ví dụ: Cho Thời gian truy nhập BNC là 100ns. Thời gian truy nhập BN Cache là 10ns. Hit ratio = 90%. Giả sử10 lần truy nhập Bộ nhớ: Không có cache : Tk có cache = 10 * 100 =1000 ns. Có cache : (có 9 lần trúng và một lần trượt) T cache = 10 * 9 + 100*1 = 190 ns.  = = 5.3 lần Hoạt động của cache Sai (k) có III.4. Các phương pháp thay thế dữ liệu Có 4 phương pháp LFU (least frequency used). LRU (least recently used) FIFO(first in first out) Random (Ngẫu nhiên). a) LFU (least frequency used) - Phương pháp thay thế ở các rãnh ít được sử dụng nhất. Ứng với một rãnh là một bộ đếm. Mỗi khi DL được nạp vào rãnh thì giá trị bộ đếm của rãnh đó được reset =0, rãnh khác giữ nguyên. Mỗi lần truy cập DL trong bộ nhớ cache, nếu DL đã tồn tại trong cache thì giá trị bộ đếm của rãnh chứa DL được tăng lên 1, còn bộ đếm của các rãnh khác giữ nguyên. Khi cần thay thế DL hệ thống sẽ tìm rãnh có giá trị bộ đếm nhỏ nhất để thay thế. b) LRU (least recently used)- Phương pháp thay thế DL ở các rãnh ít được sử dụng gần đây nhất. Ứng với một rãnh là một bộ đếm. Mỗi khi DL được nạp vào rãnh thì giá trị bộ đếm của rãnh đó được reset =0, các rãnh khác tăng lên 1. Mỗi lần truy cập DL thì giá trị của bộ đếm dữ liệu được reset = 0, còn bộ đếm của các rãnh khác tăng lên 1. Khi cần thay thế , tìm giá trị bộ đếm lớn nhất để thay thế. c) FIFO (first in first out) Ứng với một rãnh là một bộ đếm. Mỗi khi DL được nạp vào rãnh thì giá trị bộ đếm của rãnh đó được reset = 0, các rãnh khác tăng lên 1. Mỗi lần truy cập DL thì giá trị bộ đếm của các rãnh khác tăng lên 1. Khi cần thay thế tìm giá trị bộ đếm lớn nhất để thay thế->reset vị trí đó bằng 0, các giá trị khác tăng lên 1. d) Phương pháp thay thế ngẫu nhiên: Không có quy luật gì cả. IV. Bộ nhớ ảo và phân trang IV.1. Sự cần thiết của bộ nhớ ảo Bộ nhớ ảo là một kỹ thuật cho phép việc thực thi của quá trình mà quá trình có thể không hoàn toàn ở trong bộ nhớ. Một lợi điểm quan trọng của cơ chế này là các chương trình có thể lớn hơn bộ nhớ vật lý. Ngoài ra, bộ nhớ ảo phóng đại bộ nhớ chính thành bộ nhớ luận lý cực lớn khi được hiển thị bởi người dùng. Kỹ thuật này giải phóng người lập trình từ việc quan tâm đến giới hạn kích thước bộ nhớ. Bộ nhớ ảo cũng cho phép các quá trình dễ dàng chia sẻ tập tin và không gian địa chỉ, cung cấp cơ chế hữu hiện cho việc tạo quá trình. Bộ nhớ ảo là sự tách biệt bộ nhớ luận lý từ bộ nhớ vật lý. Việc tách biệt này cho phép bộ nhớ ảo rất lớn được cung cấp cho người lập trình khi chỉ bộ nhớ vật lý nhỏ hơn. Bộ nhớ ảo thường được cài đặt bởi phân trang theo yêu cầu (demand paging). Nó cũng có thể được cài đặt trong cơ chế phân đoạn. Tuy nhiên, các giải thuật thay thế đoạn phức tạp hơn các giải thuật thay thế trang vì các đoạn có kích thước thay đổi. IV.2. Phân trang Với kỹ thuật này, một chương trình hay một tiến trình được chia thành nhiều khối nhỏ có kích thước như nhau gọi là các trang, các trang này được lưu trữ ở bộ nhớ phụ (thông thường là đĩa cứng). Khi chương trình (tiến trình) được thực hiện thì hệ điều hành sẽ nạp các trang của chương trình vào các đoạn có kích thước tương ứng của bộ nhớ chính. Mỗi đoạn nhỏ chứa trang được gọi là khung trang (hay còn gọi là khung –frame). Tại một thời điểm thì trong bộ nhớ chính có một số khung đã được sử dụng, một số khung rỗng. Danh sách các khung rỗng được quản lý bởi Hệ điều hành, các trang của một tiến trình mới khi thực hiện sẽ được nạp vào các khung rỗng này, ứng với mỗi một chương trình hoặc một tiến trình thì hệ điều hành sẽ duy trì một bảng phân trang cho nó. Kích thước trang =512 Byte. Tính tỷ lệ lỗi truy cập trang A) Siêu ống dẫn Máy tính có kỹ thuật siêu ống dẫn bậc n, là cách chia các giai đoạn của kỹ thuật ống dẫn đơn giản, mỗi giai đoạn được thực hiện trong khoản thời gian Tc, thành n giai đoạn con thực hiện trong khoản thời gian Tc/n. Độ hữu hiệu của kỹ thuật này tương đương với việc thi hành n lệnh trong một chu kỳ Tc. Hình 3.15 Ta thấy trong một chu kỳ Tc máy dùng kỹ thuật siêu ống dẫn làm 2 lệnh thay vì làm1 lệnh trong máy dùng kỹ thuật ống dẫn bình thường. Trong máy tính siêu ống dẫn, tốc độ thực hiện lệnh tương đương với việc thực hiện một lệnh trong khoảng thời gian Tc/n. Các bất lợi của siêu ống dẫn là thời gian thực hiện một giai đoạn con ngắn Tc/n và việc trì hoãn trong thi hành lệnh nhảy lớn. Trong vídụ ở hình 3.15, nếu lệnh thứ i là một lệnh nhảy tương đối thì lệnh này được giải mã trong giai đoạn ID, địa chỉ nhảy đến được tính vào giai đoạn EX, lệnh phải được nhảy tới là lệnh thứ i+4, vậy có trì trệ 3 lệnh thay vì 1 lệnh trong kthuật ống dẫn bình thường. Giới thiệu 1 số KT song song Giới thiệu KT song song Các máy MIMD hiện tại có thể được xếp vào ba loại : SMP (Symmetric Multiprocesors), Cluster và NUMA (Nonunifrom Memory Access) a) Một hệ thống SMP bao gồm nhiều bộ xử lý giống nhau được lắp đặt bên trong một máy tính, các bộ xử lý này kết nối với nhau bởi một hệ thống bus bên trong hay một vài sự sắp xếp chuyển mạch thích hợp. Vấn đề lớn nhất trong hệ thống SMP là sự kết hợp các hệ thống cache riêng lẻ. Vì mỗi bộ xử lý trong SMP có một cache riêng của nó, do đó, một khối dữ liệu trong bộ nhớ trong có thể tồn tại trong một hay nhiều cache khác nhau. Nếu một khối dữ liệu trong một cache của một bộ xử lý nào đó bị thay đổi sẽ dẫn đến dữ liệu trong cache của các bộ xử lý còn lại và trong bộ nhớ trong không đồng nhất. Các giao thức cache kết hợp được thiết kế để giải quyết vấn đề này. b) Trong hệ thống cluster, các máy tính độc lập được kết nối với nhau thông qua một hệ thống kết nối tốc độ cao (mạng tốc độ cao Fast Ethernet hay Gigabit) và hoạt động như một máy tính thống nhất. Mỗi máy trong hệ thống được xem như là một phần của cluster, được gọi là một nút (node). c) Một hệ thống NUMA (Nonunifrom Memory Access) là hệ thống đa xử lý được giới thiệu trong thời gian gần đây, đây là hệ thống với bộ nhớ chia sẻ, thời gian truy cập các vùng nhớ dành riêng cho các bộ xử lý thì khác nhau. Điều này khác với kiểu quản lý bộ nhớ trong hệ thống SMP (bộ nhớ dùng chung, thời gian truy cập các vùng nhớ khác nhau trong hệ thống cho các bộ xử lý là như nhau).

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

  • pptBài giảng kiến trúc máy tính.ppt