Ủng hộ tôi
Có nhiều tiêu chí để đánh giá hiệu suất của máy tính A có tốt hơn máy tính B hay không. Trong phạm vi học liệu này chúng ta sử dụng tiêu chí thời gian thực thi chương trình để đánh giá hiệu suất của máy tính. Nghĩa là máy tính thực thi chương trình càng nhanh thì sẽ có hiệu suất càng cao, theo đó chúng ta có thể hình thành 1 công thức đơn giản:
H = 1/t
Trong đó:
H là hiệu suất
t là thời gian thực thi chương trình
Như vậy, một máy tính A có hiệu suất tốt hơn máy tính B có nghĩa là
HA > HB hay 1/tA > 1/tB, cũng có nghĩa là tA < tB
Có 2 tham số ảnh hưởng tới thời gian thực thi chương trình:
Số lệnh cần thực thi trong chương trình, chúng ta ký hiệu là n
Thời gian thực thi 1 lệnh của máy tính (chu kỳ thực thi), chúng ta ký hiệu là T
Theo đó, t = n x T hoặc có thể viết thành t = n / f với f là số lệnh máy tính mà máy tính có thể thực thi trong 1 giây (hay còn gọi là tần số) và f = 1/T.
Công thức tính thời gian ở trên chỉ đúng trong trường hợp máy tính sử dụng Bộ xử lý đơn lõi (single core), đơn chu kỳ (single cycle), nghĩa là tại một thời điểm chỉ có thể thực thi 1 lệnh và thời gian thực thi 1 lệnh đúng chính xác bằng chu kỳ máy tính. Tuy nhiên trong thực tế, để cải thiện hiệu suất thì các máy tính ngày nay thường sử dụng các Bộ xử lý đa lõi (multicore) và đa chu kỳ (multiple cycle), nghĩa là tại một thời điểm có thể thực thi nhiều lệnh và 1 lệnh có thể thực thi trong nhiều chu kỳ. Do đó, sẽ có thêm 1 thành phần mới tác động vào thời gian thực thi chương trình, đó là số lượng chu kỳ để thực thi 1 lệnh (CPI – Cycles per Instruction), khi đó công thức tính thời gian thực thi chương trình trở thành:
t = n x T x CPI
hoặc
t = n x CPI /f
Chi tiết hơn, CPI của một lệnh có thể khác CPI của lệnh khác, do đó CPI trong công thức trên chỉ là CPI trung bình, CPI này có thể được tính bằng cách lấy trung bình CPI của tất cả các lệnh như sau:
CPI = (CPI1 x n1 + CPI2 x n2 + … + CPIN x nN)/(n1 + n2 + … + nN)
Trong đó nx là số lệnh có cùng CPIx.
Như vậy, để nâng cao hiệu suất máy tính theo tiêu chí thời gian thực thi chương trình, chúng ta có thể lựa chọn 1 trong các giải pháp hoặc toàn bộ các giải pháp sau:
Giảm số lệnh thực thi của chương trình. Giải pháp này phụ thuộc rất lớn vào trình biên dịch, khả năng tối ưu của trình biên dịch càng cao thì số lệnh thực thi sẽ càng ít.
Giảm chu kỳ thực thi lệnh (tăng tần số hoạt động) của máy tính. Bộ xử lý có tốc độ càng cao thì thực hiện càng nhanh. Hiện nay do giới hạn về đặc tính của vật liệu, việc tăng tần số hoạt động của máy tính đã đạt tới ngưỡng không thể tăng thêm đáng kể được nữa.
Giảm CPI. Giảm CPI đồng nghĩa với việc tăng số lệnh có thể thực thi được trong 1 chu kỳ. Để đạt được việc này, chúng ta có thể sử dụng các Bộ xử lý đa lõi, sử dụng Bộ xử lý theo tổ chức pipeline, sử dụng caching, tiên đoán lệnh, thực thi trước, …
Một trong những giải pháp cải thiện CPI chính là đa xử lý bằng cách sử dụng nhiều lõi trên một Bộ xử lý hoặc sử dụng nhiều Bộ xử lý. Nhưng thực thế cho thấy rằng, việc tăng gấp đôi lõi xử lý (hoặc tăng gấp đôi số Bộ xử lý) thì không đồng nghĩa với việc CPI giảm đi 1 nửa. Tuy nhiên, việc sử dụng nhiều lõi xử lý hơn (hoặc dùng nhiều Bộ xử lý hơn) sẽ cải thiện đáng kể hiệu suất máy tính. Đối với các công việc mang tính chuyên biệt như đồ họa, tính toán khoa học thì việc sử dụng các GPU (Graphic Processing Unit) hoặc các bộ tăng tốc (Accelerator) với nhiều lõi xử lý song song hầu như đạt được hiệu suất tăng tuyến tính khi tăng số lượng lõi xử lý.