Tiêu chuẩn đánh giá sức mạnh của một CPU : Hiệu năng : Performance = Frequency x Instructions Per Cycle IPC xem PHỤ LỤC 4 Để tăng sức mạnh cho CPU thì 1 trong 2 cách là tăng frequency ,
Trang 1Tiêu chuẩn đánh giá sức mạnh của một CPU :
Hiệu năng :
Performance = Frequency x Instructions Per Cycle (IPC)
(xem PHỤ LỤC 4)
Để tăng sức mạnh cho CPU thì 1 trong 2 cách là tăng frequency , tức tăng độ dài pipeline lên , ppipeline càng nhiều "tầng" (xem PHỤ LỤC 3) thì frequency max có thể đạt được càng lớn (xem PHỤ LỤC 2)
Tuy nhiên khi tăng độ dài pipeline thì này sinh vẫn đề là số IPC bị giảm xuống (các yếu tố khác giữ nguyên ) cái này đại loại là : mỗi lần thực hiện instruction CPU có khả năng phải truy xuất thông tin trong cache và trong bộ nhớ trung tâm , pipeline càng nhiều tầng thì thời gian truy xuất càng dài dẫn đến việc IPC bị giảm
đi Ngoài ra còn có lí do quan trọng là (xem PHỤ LỤC 1)
Nếu frequency max có thể được đủ lớn để bù được cho sự giảm IPC này thì kiến trúc pipeline dài sẽ mạnh hơn so với kiến trúc pipeline ngắn
Tóm lại là
tăng độ dài pipeline
> IPC giảm
> frequency max tăng
độ dài pipeline của 1 số kiến trúc CPU Intel
Trang 220 tầng với core Willamette và Northwood với frequency tối đa 3,4 GHz
31 tầng với core Prescott và Cedar Mill frequency max 5 GHz
45 tầng với core Tejas frequency max 7 GHz (cái này lẽ ra là thế hệ CPU đươc Intel tung ra để tiếp bước kiến trúc netburst của Pen4 nhưng cuối cùng Intel đã thay thế nó bằng Core )
Qua đây có thể thấy rất nhanh vì sao người ta nói Pen4C mạnh hơn Pen4 E , đơn giản bởi vì Pen4 E chưa đạt tới frequency cần thiết để bù lại sự giảm IPC so với Pen4 C Trên lí thuyết Pen4 E có thể đạt đến tốc độ tối đa 5Gz nhưng vì nhiều yếu
tố cản trở như qui trình sản xuất chưa theo kịp dẫn đến hiện tượng CPU tỏa nhiệt
và tiêu tốn quá nhiều năng lượng Ngước lại dòng Pen4 lúc mới được tung ra chạy với frequency dưới 2Ghz cũng chưa tỏ ra thuyết phục , lí do cũng như trên
Pipeline càng nhiều tầng thì CPU càng có khả năng mạnh hơn Tuy nhiên khi đạt tới 1 giới hạn , frequency cao ko thể bù lại sự giảm IPC được nữa Người ta ước tính được số tầng pipeline tối ưu là vào khoảng 55(!) tức là cao hơn rất nhiều so với kiến trúc netburst hiện nay Tất nhiên yếu tố tỏa nhiệt và tiêu thụ điện năng chưa được tính đên
Trong tương lai xa rất có khả năng Intel sẽ phải quay lại với kiến trúc dựa trên pipeline nhiều tầng khi việc tăng IPC ko thể tiếp tục mãi mãi Bên cạnh việc tăng thêm số core , tốc độ vận hành cao vẫn là yếu tố quan trọng để gia tăng sức mạnh cho CPU Vì vậy rất có thể Pen4 vẫn chưa "chết" hẳn như nhiều người lầm tưởng
PHỤ LỤC 1 : Vì Sao CPU nhiều stage pipeline xử lí nhanh hơn nhưng số IPC lại
có xu hướng giảm : do vấn đề xóa và nạp lại ống pipeline giữa các lệnh + vấn đề
Trang 3tiên đoán nhánh BPU (ThangMMM)cấu trúc pipeline dài khi xử lý những lệnh độc lập thì ưu việt hơn cấu trúc pipeline ngắn do số lệnh được xử lý đồng thời nhiều hơn Tuy nhiên không phải toàn bộ lệnh được xử lý đều là những lệnh độc lập, mà còn một phần khá lớn những lệnh phụ thuộc Đơn giản nhất là những lệnh trong thuật toán xoay vòng: phép tính sau phải chờ kết quả của phép tính ngay trước mới
có thể thực hiện Đây chính là điểm yếu của kiến trúc pipeline dài Khi lệnh trước (vd lệnh 1) được thực hiện ở bậc n+1 của pipeline, lệnh kế sau nó (vd lệnh 2) đã được nạp vào và thực hiện ở bậc n, nhưng nếu lệnh 2 là phụ thuộc kết quả của lệnh
1, thì mặc dù lệnh 2 này vẫn được nạp vào pipeline nhưng nó vẫn không hề được
xử lý Sau khi lệnh 1 xử lý xong, ra kết quả, toàn bộ lệnh trong pipeline hiện thời
dù đang được xử lý ở bậc nào đều phải "tống ra ngoài" để nạp lệnh 2 lại từ bậc đầu tiên Quá trình thải - nạp - xử lý lại này mất rất nhiều thời gian (có 10bậc thì chỉ phải thải, nạp và xử lý lại 10 lệnh, còn có 30 bậc thì ), nên đây chính là nhược điểm lớn của cấu trúc pipeline dài, tuỳ vào từng soft, nhược điểm này sẽ cân bằng, lớn hơn, hoặc nhở hơn so với ưu điểm nói trên
Chính do trong một tập lệnh có sự tồn tại của cả những lệnh độc lập và phụ thuộc, nên trong CPU mới cần bộ tiên đoán nhánh BPU BPU làm nhiệm vụ tiên đoán xem lệnh nào là phụ thuộc, độc lập, và xếp thứ tự chúng sao cho việc xử lý có lợi nhất VD pipeline có 20 bậc thì 2 lệnh phụ thuộc nhau sẽ được xếp cách nhau 19 lệnh khác lúc đó khi lệnh trước vừa xử lý xong ở bậc thứ 20 thì kết quả của nó sẽ được chuyển ngay đến lệnh phụ thuộc kế sau nó vừa được nạp vào bậc 1, và 19 lệnh xen giữa 2 lệnh này vẫn được xử lý bình thường Về BPU thì AMD K8 hơn hẳn P4
PHỤ LỤC 2 : vì sao pipeline dài cho phép cpu chay xung cao (ls2)Một điểm nữa chưa thấy ai đề cập đến: tại sao kiến trúc pipeline dài lại có thể reach được
clockspeed cao hơn kiến trúc pipeline ngắn? Có thể hiểu nôm na rằng pipeline càng dài thì mỗi stage để xử lý 1 instruction càng làm ít việc Từ đó, mỗi stage của kiến trúc này đơn giản hơn mỗi stage của kiến trúc pipeline ngắn rất nhiều Do đó
mà nó có thể có được clockspeed cao hơn kiến trúc pipeline ngắn rất nhiều (ít nhất
là trên lý thuyết)
Trang 4PHỤ LỤC 3 : stage hay được dịch là đoạn , bậc (ThangMMM)trong các tài liệu về cấu trúc máy tính, mình thấy người ta thường dịch một stage của Pipeline là một đoạn hoặc một bậc chứ ít khi nói là một tầng (tầng thường chỉ độ cao nhiều hơn là
độ dài)
PHỤ LỤC 4 : Công thức chuẩn được viết dưới dạng sau :
i/s = i/c x c/s
i: instruction c: cycle s: second
Trong đó : c/s = frequency , i/c = IPC (số instruction xử lí trong 1 cyc)
Tức là hiệu năng cuối cùng được đo = số instruction/ giây
Từ công thức trên có thể thấy để tăng hiệu năng của CPU thì có thể tăng Frequency hoặc có thể tăng IPC, IPC phụ thuộc vào kiến trúc của CPU
Sức mạnh CPU phụ thuộc vào tốc độ (frequency) và IPC (số instruction thực hiên được trong 1 cycle)
EDIT 1 : bổ xung công thức chuẩn về tính hiệu năng chung cpu của pumbaa ( PHỤ LỤC 4)
EDIT 2 : góp ý của ThangMMM về ưu điểm + khuyết điểm của cấu trúc pipeline dài và cách dịch từ "stage" (PHỤ LỤC 1 và 3)
Trang 5EDIT 3 : góp ý của ls2 về nhược điểm của cpu long pipeline và tại sao long
pipeline lại cho phép tăng i/s (PHỤ LỤC 2)
EDIT 4 : thêm source của bài viết
Source :
http://www.x86-secret.com/index.php?option=articles&Itemid=3&topid=2# http://www.behardware.com/articles/623-2/intel-core-2-duo-test.html
http://www.x86-secret.com/index.php?option=articles&Itemid=3&topid=2#
1.Trong một pipeline thì một tầng tương đương với một công đoạn xử lý lệnh Một đặc điểm của pipeline kể từ thời vi xử lý pentium là không cần chờ một lệnh xử lý xong hoàn toàn mới xử lý đến lệnh kế tiếp, mà khi lệnh trước xử lý đến giai đoạn n+1 thì lệnh sau đã được nạp vào và đang được xử lý ở giai đoạn n ngay trước đó
Do vậy theo mình kiến trúc pipeline dài tuy có nhược điểm là thời gian truy xuất chậm (theo bạn nói), nhưng lại có ưu điểm là số lệnh được xử lý đồng thời sẽ nhiều hơn Ví dụ pipeline có 30 stage thì số lệnh được xử lý đồng thời là 30
Góp ý chút xíu, trong các tài liệu về cấu trúc máy tính, mình thấy người ta thường dịch một stage của Pipeline là một đoạn hoặc một bậc chứ ít khi nói là một tầng (tầng thường chỉ độ cao nhiều hơn là độ dài)
2.Có điều bro có thể nói rõ được ko vì như vậy sẽ mâu thuẫn với những gì mình viết ở trên : nếu cấu trúc pipeline dài vừa xử lí nhiều lệnh cùng 1 lúc , vừa có tiềm tăng tăng xung cao thì ko ổn
cấu trúc cpu rất phức tạp mình mới tiìm hiểu được rất ít nên bài viết còn rất đại khái chắc ko nên đi sâu quá ko thì quá tải mất