dce 2017 KIẾN TRÚC MÁY TÍNH KHOA HỌC & KỸ THUẬT MÁY TÍNH BK TP.HCM Võ Tấn Phương http://www.cse.hcmut.edu.vn/~vtphuong dce 2017 Chương Hiệu suất Kiến trúc Máy tính– Chương © Fall 2017 dce 2017 Hiệu suất ??? Chúng ta lựa chọn máy tính theo tiêu chí gì? Tại máy tính chạy chương trình tốt khơng tốt chương trình khác? Làm để đo hiệu suất máy tính? Phần cứng phần mềm ảnh hưởng nào? Tập lệnh máy tính ảnh hưởng nào? Hiểu hiệu suất biết động việc cải tiến tập trung vào công việc Kiến trúc Máy tính– Chương © Fall 2017 dce 2017 Thời gian đáp ứng & Thông lượng Thời gian đáp ứng (response time) Khoản thời gian từ lúc bắt đầu đến kết thúc công việc Response Time = CPU Time + Waiting Time (I/O, OS scheduling, etc.) Thông lượng (throughput) Số lượng công việc giải khoản thời gian Giảm thời gian thực thi cải thiện thơng lượng Ví dụ: sử dụng xử lý nhanh Thời gian thực công việc nhiều cơng việc thực Tăng thông lượng giảm thời gian đáp ứng Ví dụ: Tăng số lượng nhân xử lý Nhiều công việc thực thi song song Thời gian thực thi công việc (CPU Time) không thay đổi Thời gian chờ hàng đợi định thời giảm (OS scheduling) Kiến trúc Máy tính– Chương © Fall 2017 dce 2017 Định nghĩa hiệu suất (performance) Một chương trình A chạy máy tính X PerformanceX = Execution timeX X nhanh hơnY n lần (cùng chạy chương trình A) PerformanceX PerformanceY Kiến trúc Máy tính– Chương = Execution timeY Execution timeX =n © Fall 2017 dce 2017 Thời gian thực thi “Execution Time”? Thời gian trôi qua (elapsed time) Tính tấc cả: CPU time, Waiting time, Input/output, disk access, OS scheduling, … etc Con số hữu ích, không phù hợp cho mục đích đánh giá CPU Execution Time ~ CPU Execution Time Chỉ tính thời gian thực thi lệnh chương trình Khơng tính: thời gian chờ I/O OS scheduling Được tính “giây”, Thể thơng qua số lượng chu kỳ xung nhịp CPU thực thi chương trình A (CPU clock cycles) Kiến trúc Máy tính– Chương © Fall 2017 dce 2017 Số chu kỳ xung nhịp (Clock Cycles) Clock cycle = Clock period = / Clock rate Cycle Cycle Cycle Clock rate = Clock frequency = Cycles per second 1 Hz = cycle/sec KHz = 103 cycles/sec 1 MHz = 106 cycles/sec GHz = 109 cycles/sec 2 GHz clock has a cycle time = 1/(2×109) = 0.5 nanosecond (ns) Dùng số chu kỳ xung nhịp thể CPU execution time CPU Execution Time = Clock cycles × cycle time Kiến trúc Máy tính– Chương = Clock cycles Clock rate © Fall 2017 dce 2017 Cải tiến hiệu suất Để cải tiến hiệu suất: Giảm số chu kỳ xung nhịp cần thiết để thực thi chương trình, Giảm thời gian chu kỳ (tăng tần số xung nhịp) Ví dụ: Chương trình A chạy 10 giây máy tính X với tần số GHz Số lượng chu kỳ xung nhịp để chạy chương trình A máy X ? Yêu cầu thiết kế máy tính Y chạy chương trình A giây Máy tính Y cần thêm 10% số chu kỳ xung nhịp Hỏi máy tính Y cần xung nhịp có tần số ? Lời giải: Clock cycles máy X = 10 sec × × 109 cycles/s = 20 × 109 Clock cycles máy Y = 1.1 × 20 × 109 = 22 × 109 cycles Clock rate cho máy Y = 22 × 109 cycles / sec = 3.67 GHz Kiến trúc Máy tính– Chương © Fall 2017 dce 2017 Clock Cycles per Instruction (CPI) Chương trình chuỗi lệnh CPI số trung bình số chu kỳ xung nhịp lệnh I1 I2 I3 Kiến trúc Máy tính– Chương I4 I5 I6 CPI = 14/7 = I7 10 11 12 13 14 cycles © Fall 2017 dce 2017 Thời gian thực thi Thông tin từ chương trình A thực thi … Số lượng lệnh (lệnh dạng ngôn ngữ máy hợp ngữ) Số lượng chu kỳ xung nhịp CPU thực thi Thời gian thực thi Liên hệ CPU clock cycles đến Instruction Count CPU clock cycles = Instruction Count × CPI Thời gian thực thi: (liên quan đế số lượng lệnh) Time = Instruction Count × CPI × cycle time Kiến trúc Máy tính– Chương © Fall 2017 10 dce 2017 Ví dụ Máy A B có chung kiến trúc tập lệnh (ISA) Chương trình P chạy A B Máy A có clock cycle time: 250 ps CPI: 2.0 Máy B có clock cycle time: 500 ps CPI: 1.2 Máy chạy P nhanh lần? Lời giải: Chung ISA => chung số lệnh IC CPU execution time (A) = IC × 2.0 × 250 ps = 500 × IC ps CPU execution time (B) = I C × 1.2 × 500 ps = 600 × IC ps Máy A nhan máy B = Kiến trúc Máy tính– Chương 600 × IC 500 × IC = 1.2 © Fall 2017 11 dce 2017 Xác định CPI Phân biệt CPI trung bình chương trình lệnh CPIi = số chu kỳ xung nhịp loại lệnh i Ci = số lệnh loại lệnh i n (CPIi × Ci) n CPU cycles = ∑ (CPI × C ) i i=1 i ∑ CPI = i=1 n ∑C i i=1 Kiến trúc Máy tính– Chương © Fall 2017 12 dce 2017 Kiến trúc Máy tính– Chương © Fall 2017 13 dce 2017 Ví dụ: CPI trung bình Sau biên dịch chương trình với loại lệnh A, B, C cho kết quả: Kết biên dịch 1: IC = Clock Cycles = 2×1 + 1×2 + 2×3 = 10 Avg CPI = 10/5 = 2.0 Kết biên dịch 2: IC = Clock Cycles = 4×1 + 1×2 + 1×3 =9 Avg CPI = 9/6 = 1.5 14 Kiến trúc Máy tính– Chương © Fall 2017 14 dce 2017 Ví dụ Cho thơng số chương trình bảng CPI trung bình? Tỉ lệ % thời gian nhóm lệnh? Classi Freqi CPIi CPIi × Freqi %Time ALU Load Store Branch 50% 20% 10% 20% 0.5×1 = 0.5 0.2×5 = 1.0 0.1×3 = 0.3 0.2×2 = 0.4 0.5/2.2 = 23% 1.0/2.2 = 45% 0.3/2.2 = 14% 0.4/2.2 = 18% Average CPI = 0.5+1.0+0.3+0.4 = 2.2 Tính speed up trường hợp CPI lệnh load = 2? Tính speed up trường hợp lệnh ALU thực thi chu kỳ xung nhịp? Kiến trúc Máy tính– Chương © Fall 2017 15 dce 2017 Thông số MIPS – Triệu lệnh giây MIPS: Millions Instructions Per Second Được dùng làm thông số đo hiệu suất Máy chạy nhanh MIPS lớn MIPS đo tốc độ xử lý lệnh MIPS = Instruction Count Execution Time × = 106 Clock Rate CPI × 106 Thời gian thực thi tính theo MIPS Execution Time = Kiến trúc Máy tính– Chương Inst Count MIPS × 106 = Inst Count × CPI Clock Rate © Fall 2017 16 dce 2017 Hạn chế thông số MIPS Ba vấn đề thông số MIPS Khơng tính đến số lượng lệnh Khơng thể dung MIPS để so sánh máy tính có tập lệnh khác IC khác MIPS thay đổi máy tính Một máy tính khơng thể có thơng số MIPS chung cho tất chương trình MIPS đối lập với thông số hiệu suất MIPS cao không đồng nghĩa hiệu suất tốt Xem ví dụ slide kế Kiến trúc Máy tính– Chương © Fall 2017 17 dce 2017 Ví dụ thơng số MIPS Hai compiler so sánh biên dịch chương trình chạy máy tính GHz với nhóm lệnh: Class A, Class B Class C; CPI tương ứng 1, chu kỳ xung nhịp Compiler sinh tỉ lệnh Class A, tỉ lệnh Class B tỉ lệnh Class C Compiler sinh 10 tỉ lệnh Class A, 0.5 tỉ lệnh Class B tỉ lệnh Class C Compiler sinh chương trình có thơng số MIPS cao hơn? Compiler sinh chương trình có thời gian thực thi tốt hơn? Kiến trúc Máy tính– Chương © Fall 2017 18 dce 2017 Lời giải Số chu kỳ xung nhịp tương ứng CPU cycles (compiler 1) = (5×1 + 1×2 + 1×3)×109 = 10×109 CPU cycles (compiler 2) = (10×1+0.5×2+1×3)×109 = 14×109 Thời gian thực thi tương ứng Execution time (compiler 1) = 10×109 cycles / 4×109 Hz = 2.5 sec Execution time (compiler 2) = 14×109 cycles / 4×109 Hz = 3.5 sec Compiler1 sinh chương trình chạy nhanh Thông số MIPS tương ứng MIPS = Instruction Count / (Execution Time × 106) MIPS (compiler 1) = (5+1+1) × 109 / (2.5 × 106) = 2800 MIPS (compiler 2) = (10+0.5+1) × 109 / (3.5 × 106) = 3286 Compiler2 sinh chương trình có thơng số MIPS cao hơn!!! Kiến trúc Máy tính– Chương © Fall 2017 19 dce 2017 Các yếu tố tác động đến thời gian thực thi Time = Instruction Count × CPI × cycle time I-Count CPI Cycle Program X Compiler X X ISA X X X X X Organization Technology Kiến trúc Máy tính– Chương X © Fall 2017 20 dce 2017 Amdahl’s Law Amdahl's Law dùng để đo Speedup So sánh máy tính trước sau áp dụng cải tiến E Performance with E ExTime before Speedup(E) = = Performance before ExTime with E Cải tiến E chiếm tỉ lệ f thời gian thực thi cải thiện s lần phần khác có thời gian khơng đổi ExTime with E = ExTime before × (f / s + (1 – f )) Speedup(E) = Kiến trúc Máy tính– Chương (f / s + (1 – f )) © Fall 2017 21 dce 2017 Ví dụ Amdahl's Law Một chương trình chạy 100 giây, phần phép nhân tốn 80 giây Cần cải tiến phép nhân lần để chương trình chạy nhanh lần? Lời giải: giả sử phép nhân cải thiện s lần 25 sec (4 times faster) = 80 sec / s + 20 sec s = 80 / (25 – 20) = 80 / = 16 Cần cải tiến phép nhân nhanh s = 16 lần Chương trình chạy nhanh lần? 20 sec ( times faster) = 80 sec / s + 20 sec s = 80 / (20 – 20) = ∞ Khơng thể! Kiến trúc Máy tính– Chương © Fall 2017 22