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 , 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 20 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 đề tiê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). PHỤ 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) EDIT 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