Cpi trong máy tính là gì

Làm sao để có thể đo đạc, đánh giá hiệu suất (performance) và định ra được những yếu tố quyết định đến hiệu suất của 1 máy tính ? Lý do chính để khảo sát về hiệu suất là vì hiệu suất của phần cứng máy tính thường là yếu tố mấu chốt quyết định đến tính hiệu quả trong hoạt động của1 một hệ thống bao gồm cả phần cứng lẫn phần mềm. Hiệu suất luôn là một thuộc tính quan trọng trong việc lựa chọn, mua bán các máy tính được cả người bán lẫn người mua quan tâm! Hiệu suất càng được các nhà thiết kế máy tính (trong đó có chúng ta) quan tâm.

Việc đánh giá hiệu suất máy tính không hề đơn giản. Hiệu suất không chỉ có được do các cải tiến phần cứng mà cũng có thể nhờ vào các phần mềm thông minh hay cả hai. Tùy góc độ ứng dụng khác nhau, hiệu suất hoàn toàn có thể được đánh giá theo những phương cách, những chỉ số khác nhau. Ở góc độ nhà thiết kế máy tính (phần cứng/phần mềm), chúng ta cần nắm rõ: Các vấn đề liên quan đến việc đánh giá hiệu suất máy tính, hoạt động của các thành phần khác nhau (phần cứng/phần mềm) và ảnh hưởng của chúng đến hiệu suất. Trong mỗi ứng dụng cụ thể, xác định phương pháp đánh giá hiệu suất phù hợp.

Định nghĩa hiệu suất: trước hết chúng ta xem xét hai khái niệm liên quan § Thời gian đáp ứng (response time) hay thời gian thực thi (execution time), là thời gian từ khi bắt đầu đến khi kết thúc chương trình. Thời gian này bao gồm: thời gian truy cập đĩa, thời gian truy cập bộ nhớ, thời gian thực thi CPU,… § Throughput: là tổng số các chương trình thực thi xong trong một đơn vị thời gian.

Trước tiên, chúng ta đánh giá hiệu suất thông qua thời gian thực thi. Cực đại hóa hiệu suất đồng nghĩa với tối thiểu hóa thời gian thực thi. Quan hệ giữa hiệu suất và thời gian thực thi ở máy tính X sẽ là:

Cpi trong máy tính là gì

Ta nói máy tính X có hiệu suất cao hơn máy tính Y n lần đồng nghĩa với máy tính X nhanh hơn máy tính Y n lần.

Cpi trong máy tính là gì

Thí dụ: nếu máy tính A thực thi chương trình mất 10s và máy tính B thực thi cùng chương trình mất15s, A nhanh hơn B bao nhiêu lần? Ta biết rằng A nhanh hơn B n lần nếu:

Cpi trong máy tính là gì

Do đó: 15/10=1.5.==> Vậy máy tính A nhanh hơn máy tính B 1.5 lần

Đo đạc hiệu suất

Thời gian được sử dụng làm thước đo cho hiệu suất máy tính. Tuy nhiên thời gian ở đây được định nghĩa theo nhiều cách khác nhau, tùy theo mục đích đo đạc như: thời gian theo xung nhịp (clock), thời gian thực thi (execution time), thời gian trôi qua (elapsed time). Thời gian thực thi chương trình bao gồm thời gian thực thi bởi CPU lẫn các thiết bị khác (bộ nhớ, đĩa cứng,v.v…). Để đơn giản, chúng ta chỉ giới hạn xem xét đối với CPU mà thôi. Có thể đo đạc hiệu suất qua thời gian thực thi theo chu kỳ xung nhịp (clock cycle) và thời gian chu kỳ xung nhịp (clock cycle time) như sau:

Cpi trong máy tính là gì

Thí dụ: thời gian thực thi chương trình trên máy tính A, tần số 4 GHz, là 10s. Chúng ta muốn thiết kế máy tính B có thể thực thi chương trình trên trong 6s. Để đạt được điều này, cần phải tăng tần số xung nhịp của máy B và vì vậy số chu kỳ xung nhịp thực thi chương trình bị tăng lên 1,2 lần. Hãy xác định tần số xung nhịp của máy B?

Đầu tiên, tính số chu kỳ xung nhịp cần để thực hiện chương trình trên máy A, ta có:

Cpi trong máy tính là gì

Thời gian thực thi trên máy B được tính như sau:

Cpi trong máy tính là gì

Do đó, cần tăng gấp đôi tần số xung nhịp của máy B so với máy A để chương trình thực thi trong 6s.

Ngoài ra, ta có thể tính thời gian thực thi chương trình dựa vào chỉ số CPI (clock cycle per instruction): số chu kỳ xung nhịp trung bình cần thiết để thực thi một câu lệnh. Khi đó số chu kỳ xung nhịp có thể được tính:

Số chu kỳ xung nhịp = (số lệnh của chương trình) × CPI

Thí dụ: xét 2 máy tính A và B có cùng kiến trúc tập lệnh. Máy A có chu kỳ xung nhịp là 250 ps và đạt được CPI là 2,0 khi chạy chương trình P. Máy B có chu kỳ xung nhịp là 500 ps và đạt được CPI bằng 1,2 khi chạy chương trình P. Máy nào thực thi chương trình P nhanh hơn và nhanh hơn bao nhiêu lần ?

Do 2 máy có cùng kiến trúc tập lệnh nên số lệnh thực thi của chương trình P trên 2 máy này bằng nhau. Giả sử gọi số lệnh này là I. Ta có: Số chu kỳ xung nhịpA = I × 2.0 Số chu kỳ xung nhịpB = I × 1.2 Do đó, thời gian thực thi trên mỗi máy: Thời gian thực thiA = Số chu kỳ xung nhịpA × thời gian chu kỳ xung nhịpA

= I × 2.0 × 250 ps = 500 × I ps

Thời gian thực thiB = I × 1.2 × 500 ps = 600 × I ps Như vậy, máy tính A nhanh hơn là:

Cpi trong máy tính là gì

Dựa trên chỉ số CPI, ta có công thức tính thời gian thực thi: Thời gian thực thi = số lệnh × CPI × thời gian chu kỳ xung nhịp hay:

Cpi trong máy tính là gì

Trong trường hợp tập lệnh được phân chia thành nhiều nhóm lệnh, khi đó hiệu suất có thể tính toán theo nhóm lệnh như sau:

Cpi trong máy tính là gì

Thí dụ: xét 1 máy tính có đặc điểm tập lệnh như sau:

Cpi trong máy tính là gì

Khi biên dịch cùng 1 chương trình nguồn bằng 2 trình biên dịch khác nhau, ta được 2 đoạn mã lệnh như sau:

Cpi trong máy tính là gì

Đoạn mã nào thực hiện nhiều câu lệnh hơn ? chạy nhanh hơn ? Tính CPI cho từng đoạn mã lệnh ?

Đoạn mã 1 thực hiện: 2 + 1 + 2 = 5 lệnh, trong khi đoạn mã 2 thực hiện là: 4 + 1 + 1 = 6 lệnh. Như vậy, đoạn mã 2 thực hiện nhiều lệnh hơn. Để tính số chu kỳ xung nhịp cho mỗi đoạn mã dựa vào công thức:

Cpi trong máy tính là gì

Do đó:

Cpi trong máy tính là gì

Vì thế đoạn mã 2 thực hiện nhanh hơn. CPI của mỗi đoạn được tính như sau:

Cpi trong máy tính là gì

Một chỉ số khác cũng được dùng để đánh giá hiệu suất, đó là MIPS (million instructions per second) được xác định như sau:

Cpi trong máy tính là gì