Bài giảng Kiến trúc máy tính - Chương 1: Giới thiệu chung - Nguyễn Kim Khánh
n Máy tính (Computer) là thiết bị điện tử thực
hiện các công việc sau:
n Nhận dữ liệu vào,
n Xử lý dữ liệu theo dãy các lệnh được nhớ sẵn bên
trong,
n Đưa dữ liệu (thông tin) ra.
n 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
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 đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 1: Giới thiệu chung - Nguyễn Kim Khánh", để 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: Bài giảng Kiến trúc máy tính - Chương 1: Giới thiệu chung - Nguyễn Kim Khánh
ới thiệu chung Chương 2. Cơ bản về logic số Chương 3. Hệ thống máy tính Chương 4. Số học máy tính Chương 5. Kiến trúc tập lệnh Chương 6. Bộ xử lý Chương 7. Bộ nhớ máy tính Chương 8. Hệ thống vào-ra Chương 9. Các kiến trúc song song 2017 Kiến trúc máy tính 5 NKK-HUST Content Chapter 1. Introduction Chapter 2. The Basics of Digital Logic Chapter 3. Computer Systems Chapter 4. Computer Arithmetic Chapter 5. Instruction Set Architecture Chapter 6. The Processors Chapter 7. Computer Memory Chapter 8. Input-Output Systems Chapter 9. Parallel Architectures 2017 Kiến trúc máy tính 6 NKK-HUST Kiến trúc máy tính Chương 1 GIỚI THIỆU CHUNG Nguyễn Kim Khánh Trường Đại học Bách khoa Hà Nội 2017 Kiến trúc máy tính 7 NKK-HUST 1.1. Máy tính và phân loại máy tính 1.2. Khái niệm kiến trúc máy tính 1.3. Sự tiến hóa của công nghệ máy tính 1.4. Hiệu năng máy tính Nội dung của chương 1 2017 Kiến trúc máy tính 8 NKK-HUST n Máy tính (Computer) là thiết bị điện tử thực hiện các công việc sau: n Nhận dữ liệu vào, n Xử lý dữ liệu theo dãy các lệnh được nhớ sẵn bên trong, n Đưa dữ liệu (thông tin) ra. n 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 1.1. Máy tính và phân loại máy tính 2017 Kiến trúc máy tính 9 NKK-HUST Các thiết bị vào (Input Devices) Bộ nhớ chính (Main Memory) Các thiết bị ra (Output Devices) Bộ xử lý trung tâm (Central Processing Unit) Mô hình đơn giản của máy tính 2017 Kiến trúc máy tính 10 dữ liệu vào dữ liệu rachương trình đang thực hiện xử lý dữ liệu NKK-HUST n Máy tính cá nhân (Personal Computers) n Desktop computers, Laptop computers n Máy tính đa dụng n Máy chủ (Servers) – máy phục vụ n Dùng trong mạng để quản lý và cung cấp các dịch vụ n Hiệu năng và độ tin cậy cao n Hàng nghìn đến hàng triệu USD n Siêu máy tính (Supercomputers) n Dùng cho tính toán cao cấp trong khoa học và kỹ thuật n Hàng triệu đến hàng trăm triệu USD n Máy tính nhúng (Embedded Computers) n Đặt ẩn trong thiết bị khác n Được thiết kế chuyên dụng Phân loại máy tính kỷ nguyên PC 2017 Kiến trúc máy tính 11 NKK-HUST n Thiết bị di động cá nhân (PMD - Personal Mobile Devices) n Smartphones, Tablet n Kết nối Internet n Điện toán đám mây (Cloud Computing) n Sử dụng máy tính qui mô lớn (Warehouse Scale Computers), gồm rất nhiều servers kết nối với nhau n Cho các công ty thuê một phần để cung cấp dịch vụ phần mềm n Software as a Service (SaaS): một phần của phần mềm chạy trên PMD, một phần chạy trên Cloud n Ví dụ: Amazon, Google Phân loại máy tính kỷ nguyên sau PC 2017 Kiến trúc máy tính 12 NKK-HUST 1.2. Khái niệm kiến trúc máy tính 2017 Kiến trúc máy tính 13 n Kiến trúc máy tính bao gồm: n 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 n Tổ chức máy tính (Computer Organization) hay Vi kiến trúc (Microarchitecture): nghiên cứu thiết kế máy tính ở mức cao (thiết kế CPU, hệ thống nhớ, cấu trúc bus, ...) n 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. n Cùng một kiến trúc tập lệnh có thể có nhiều sản phẩm (tổ chức, phần cứng) khác nhau NKK-HUST Phân lớp máy tính n Phần mềm ứng dụng n Được viết theo ngôn ngữ bậc cao n Phần mềm hệ thống n Chương trình dịch (Compiler): dịch mã ngôn ngữ bậc cao thành ngôn ngữ máy n Hệ điều hành (Operating System) n Lập lịch cho các nhiệm vụ và chia sẻ tài nguyên n Quản lý bộ nhớ và lưu trữ n Điều khiển vào-ra n Phần cứng n Bộ xử lý, bộ nhớ, mô-đun vào-ra 2017 Kiến trúc máy tính 14 Phần mềm ứng dụng Phần mềm hệ thống Phần cứng Người sử dụng Người lập trình Người lập trình hệ thống NKK-HUST Các mức của mã chương trình n Ngôn ngữ bậc cao n High-level language – HLL n Mức trừu tượng gần với vấn đề cần giải quyết n Hiệu quả và linh động n Hợp ngữ n Assembly language n Mô tả lệnh dưới dạng text n Ngôn ngữ máy n Machine language n Mô tả theo phần cứng n Các lệnh và dữ liệu được mã hóa theo nhị phân 2017 Kiến trúc máy tính 15 ! e recognition that a program could be written to translate a more powerful language into computer instructions was one of the great breakthroughs in the early days of computing. Programmers today owe their productivity—and their sanity—to the creation of high-level programming languages and compilers that translate programs in such languages into instructions. Figure 1.4 shows the relationships among these programs and languages, which are more examples of the power of abstraction. high-level programming language A portable language such as C, C!!, Java, or Visual Basic that is composed of words and algebraic notation that can be translated by a compiler into assembly language. FIGURE 1.4 C program compiled into assembly language and then assembled into binary machine language. Although the translation from high-level language to binary machine language is shown in two steps, some compilers cut out the middleman and produce binary machine language directly. ! ese languages and this program are examined in more detail in Chapter 2. 1.3 Below Your Program 15 swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } swap: multi $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 00000000101000100000000100011000 00000000100000100001000000100001 10001101111000100000000000000000 10001110000100100000000000000100 10101110000100100000000000000000 10101101111000100000000000000100 00000011111000000000000000001000 Assembler Compiler Binary machine language program (for MIPS) Assembly language program (for MIPS) High-level language program (in C) NKK-HUST Các thành phần cơ bản của máy tính 2017 Kiến trúc máy tính 16 n Giống nhau với tất cả các loại máy tính n Bộ xử lý trung tâm (Central Processing Unit – CPU) n Điều khiển hoạt động của máy tính và xử lý dữ liệu n Bộ nhớ chính (Main Memory) n Chứa các chương trình đang thực hiện n Hệ thống vào-ra (Input/Output) n Trao đổi thông tin giữa máy tính với bên ngoài n Bus hệ thống (System bus) n Kết nối và vận chuyển thông tin CPU Bộ nhớ chính Bus hệ thống Hệ thống vào-ra NKK-HUST 1.3. Sự tiến hóa của công nghệ máy tính n Máy tính dùng đèn điện tử chân không (1950s) n Máy tính ENIAC: máy tính đầu tiên (1946) n Máy tính IAS: máy tính von Neumann (1952) n Máy tính dùng transistors (1960s) n Máy tính dùng vi mạch SSI, MSI và LSI (1970s) n SSI - Small Scale Integration n MSI - Medium Scale Integration n LSI - Large Scale Integration n Máy tính dùng vi mạch VLSI (1980s) n VLSI - Very Large Scale Integration n Máy tính dùng vi mạch ULSI (1990s-nay) n ULSI - Ultra Large Scale Integration 2017 Kiến trúc máy tính 17 NKK-HUST n Electronic Numerical Intergator and Computer n Dự án của Bộ Quốc phòng Mỹ n Do John Mauchly ở đại học Pennsylvania thiết kế n 30 tấn n Xử lý theo số thập phân Máy tính đầu tiên: ENIAC và IAS 2017 Kiến trúc máy tính 18 n Thực hiện tại Princeton Institute for Advanced Studies n Do John von Neumann thiết kế theo ý tưởng “stored program” n Xử lý theo số nhị phân n Trở thành mô hình cơ bản của máy tính NKK-HUST Máy tính ngày nay Clusters Massive Cluster Gigabit Ethernet Robots Routers Cars Sensor Nets R ef rig er at or s RobotsRouters 2017 Kiến trúc máy tính 19 NKK-HUST n Bộ vi xử lý (Microprocessors) n Một hoặc một vài CPU được chế tạo trên một chip n Vi mạch điều khiển tổng hợp (Chipset) n Vi mạch thực hiện các chức năng nối ghép các thành phần của máy tính với nhau n Bộ nhớ bán dẫn (Semiconductor Memory) n ROM, RAM, Flash memory n Hệ thống trên chip (SoC – System on Chip) hay Bộ vi điều khiển (Microcontrollers) n Tích hợp các thành phần chính của máy tính trên một chip vi mạch n Được sử dụng chủ yếu trên smartphone, tablet và các máy tính nhúng Một số loại vi mạch số điển hình 2017 Kiến trúc máy tính 20 NKK-HUST Sự phát triển của bộ vi xử lý 2017 Kiến trúc máy tính 21 n 1971: bộ vi xử lý 4-bit Intel 4004 n 1972: các bộ xử lý 8-bit n 1978: các bộ xử lý 16-bit n Máy tính cá nhân IBM-PC ra đời năm 1981 n 1985: các bộ xử lý 32-bit n 2001: các bộ xử lý 64-bit n 2006: các bộ xử lý đa lõi (multicores) n Nhiều CPU trên 1 chip NKK-HUST 1.4. Hiệu năng máy tính n Định nghĩa hiệu năng P (Performance): Hiệu năng = 1/(thời gian thực hiện) hay là: P = 1/t “Máy tính A nhanh hơn máy B k lần” PA / PB = tB / tA = k n Ví dụ: Thời gian chạy chương trình: n 10s trên máy A, 15s trên máy B n tB / tA = 15s / 10s = 1.5 n Vậy máy A nhanh hơn máy B 1.5 lần 2017 Kiến trúc máy tính 22 NKK-HUST Tốc độ xung nhịp của CPU n Về mặt thời gian, CPU hoạt động theo một xung nhịp (clock) có tốc độ xác định n Chu kỳ xung nhịp T0 (Clock period): thời gian của một chu kỳ n Tốc độ xung nhịp f0 (Clock rate) hay là Tần số xung nhịp: số chu kỳ trong 1s n f0 = 1/T0 n VD: Bộ xử lý có f0 = 4GHz = 4×109Hz T0 = 1/(4x109) = 0.25x10–9s = 0.25ns T0 2017 Kiến trúc máy tính 23 NKK-HUST Thời gian thực hiện của CPU n: số chu kỳ xung nhịp n Hiệu năng được tăng lên bằng cách: n Giảm số chu kỳ xung nhịp n n Tăng tốc độ xung nhịp f0 tCPU = n×T0 = n f0 2017 Kiến trúc máy tính 24 n Để đơn giản, ta xét thời gian CPU thực hiện chương trình (CPU time): Thời gian thực hiện của CPU = Số chu kỳ xung nhịp x Thời gian một chu kỳ NKK-HUST Ví dụ n Hai máy tính A và B cùng chạy một chương trình n Máy tính A: n Tốc độ xung nhịp của CPU: fA = 2GHz n Thời gian CPU thực hiện chương trình: tA = 10s n Máy tính B: n Thời gian CPU thực hiện chương trình: tB = 6s n Số chu kỳ xung nhịp khi chạy chương trình trên máy B (nB) nhiều hơn 1.2 lần số chu kỳ xung nhịp khi chạy chương trình trên máy A (nA) n Hãy xác định tốc độ xung nhịp cần thiết cho máy B (fB)? 2017 Kiến trúc máy tính 25 NKK-HUST Ví dụ (tiếp) t = nf 2017 Kiến trúc máy tính 26 nA = tA × fA =10s×2GHz = 20×109 Số chu kỳ xung nhịp khi chạy chương trình trên máy A: Số chu kỳ xung nhịp khi chạy chương trình trên máy B: nB =1.2×nA = 24×109 Ta có: fB = nB tB = 24×109 6 = 4×10 9Hz = 4GHz Tốc độ xung nhịp cần thiết cho máy B: NKK-HUST Số lệnh và số chu kỳ trên một lệnh Trong trường hợp các lệnh khác nhau có CPI khác nhau, cần tính CPI trung bình Số chu kỳ = Số lệnh của chương trình x Số chu kỳ trên một lệnh n = IC ×CPI Vậy thời gian thực hiện của CPU: tCPU = IC ×CPI ×T0 = IC ×CPI f0 2017 Kiến trúc máy tính 27 n n - số chu kỳ xung nhịp n IC - số lệnh của chương trình (Instruction Count) n CPI - số chu kỳ trên một lệnh (Cycles per Instruction) Số chu kỳ xung nhịp của chương trình: NKK-HUST Ví dụ n Hai máy tính A và B có cùng kiến trúc tập lệnh n Máy tính A có: n Chu kỳ xung nhịp: TA = 250ps n Số chu kỳ/ lệnh trung bình: CPIA = 2.0 n Máy tính B: n Chu kỳ xung nhịp: TB = 500ps n Số chu kỳ/ lệnh trung bình: CPIB = 1.2 n Hãy xác định máy nào nhanh hơn và nhanh hơn bao nhiêu ? 2017 Kiến trúc máy tính 28 NKK-HUST Ví dụ (tiếp) 2017 Kiến trúc máy tính 29 Kết luận: máy A nhanh hơn máy B 1.2 lần ICA = ICB = IC tA = ICA ×CPIA ×TA = IC ×2.0×250ps = IC ×500ps tB tA = IC ×600ps IC ×500ps =1.2 Ta có: tCPU = IC ×CPITB ×T0 Hai máy cùng kiến trúc tập lệnh, vì vậy số lệnh của cùng một chương trình trên hai máy là bằng nhau: tB = ICB ×CPIB ×TB = IC ×1.2×500ps = IC ×600ps Từ đó ta có: Thời gian thực hiện chương trình đó trên máy A và máy B: NKK-HUST CPI trung bình n Nếu loại lệnh khác nhau có số chu kỳ khác nhau, ta có tổng số chu kỳ: n CPI trung bình: 2017 Kiến trúc máy tính 30 n = CPIi × ICi( ) i=1 K ∑ CPITB = n IC = 1 IC CPIi × ICi( )i=1 K ∑ NKK-HUST Ví dụ n Cho bảng chỉ ra các dãy lệnh sử dụng các lệnh thuộc các loại A, B, C. Tính CPI trung bình? Loại lệnh A B C CPI theo loại lệnh 1 2 3 IC trong dãy lệnh 1 20 10 20 IC trong dãy lệnh 2 40 10 10 2017 Kiến trúc máy tính 31 NKK-HUST Ví dụ n Cho bảng chỉ ra các dãy lệnh sử dụng các lệnh thuộc các loại A, B, C. Tính CPI trung bình? Loại lệnh A B C CPI theo loại lệnh 1 2 3 IC trong dãy lệnh 1 20 10 20 IC trong dãy lệnh 2 40 10 10 n Dãy lệnh 1: Số lệnh = 50 n Số chu kỳ = = 1x20 + 2x10 + 3x20 = 100 n CPITB = 100/50 = 2.0 n Dãy lệnh 2: Số lệnh = 60 n Số chu kỳ = = 1x40 + 2x10 + 3x10 = 90 n CPITB = 90/60 = 1.5 2017 Kiến trúc máy tính 32 NKK-HUST Tóm tắt về Hiệu năng n Hiệu năng phụ thuộc vào: n Thuật giải n Ngôn ngữ lập trình n Chương trình dịch n Kiến trúc tập lệnh n Phần cứng cycle Clock Seconds nInstructio cycles Clock Program nsInstructioTime CPU ´´= tCPU = IC ×CPI ×T0 = IC ×CPI f0 2017 Kiến trúc máy tính 33 Thời gian CPU = Số lệnh của chương trình x Số chu kỳ/lệnh x Số giây của một chu kỳ NKK-HUST MIPS như là thước đo hiệu năng n MIPS: Millions of Instructions Per Second (Số triệu lệnh trên 1 giây) MIPS = Instruction count Execution time×106 = Instruction count Instruction count×CPI Clock rate ×106 = Clock rate CPI×106 6 0 10MIPS fCPI ´ =6 0 10CPI fMIPS ´ = 2017 Kiến trúc máy tính 34 NKK-HUST Ví dụ Tính MIPS của bộ xử lý với: clock rate = 2GHz và CPI = 4 2017 Kiến trúc máy tính 35 NKK-HUST Ví dụ Tính MIPS của bộ xử lý với: clock rate = 2GHz và CPI = 4 0.5ns 2ns § Chu kỳ T0 = 1/(2x109) = 0.5ns § CPI = 4 à thời gian thực hiện 1 lệnh = 4 x 0.5ns = 2ns § Số lệnh thực hiện trong 1s = (109ns)/(2ns) = 5x108 lệnh § Vậy bộ xử lý thực hiện được 500 MIPS 2017 Kiến trúc máy tính 36 NKK-HUST Ví dụ Tính CPI của bộ xử lý với: clock rate = 1GHz và 400 MIPS 2017 Kiến trúc máy tính 37 NKK-HUST Ví dụ Tính CPI của bộ xử lý với: clock rate = 1GHz và 400 MIPS 1ns § Chu kỳ T0 = 1/109 = 1ns § Số lệnh thực hiện trong 1 s là 400MIPS = 4x108 lệnh § Thời gian thực hiện 1 lệnh = 1/(4x108)s = 2.5ns § Vậy ta có: CPI = 2.5 2017 Kiến trúc máy tính 38 NKK-HUST MFLOPS § Sử dụng cho các hệ thống tính toán lớn § Millions of Floating Point Operations per Second § Số triệu phép toán số dấu phẩy động trên một giây GFLOPS(109 ) TFLOPS(1012) PFLOPS (1015) MFLOPS = Executed floating point operations Execution time×106 2017 Kiến trúc máy tính 39 NKK-HUST Các ý tưởng tuyệt vời trong kiến trúc máy tính 2017 Kiến trúc máy tính 40 1. Design for Moore’s Law Thiết kế theo luật Moore 2. Use abstraction to simplify design Sử dụng trừu tượng hóa để đơn giản thiết kế 3. Make the common case fast Làm cho các trường hợp phổ biến thực hiện nhanh 4. Performance via parallelism Tăng hiệu năng qua xử lý song song 5. Performance via pipelining Tăng hiệu năng qua kỹ thuật đường ống 6. Performance via prediction Tăng hiệu năng thông qua dự đoán 7. Hierarchy of memories Phân cấp bộ nhớ 8. Dependability via redundancy Tăng độ tin cậy thông qua dự phòng NKK-HUST Hết chương 1 2017 Kiến trúc máy tính 41
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_1_gioi_thieu_chung_nguye.pdf