PDA

View Full Version : ảnh hưởng của số tầng Pipelines lên sức mạnh Cpu


athlon26
24-07-2006, 23:16
Mở hàng 1 thread đóng góp cho Voz cái :D


Bài viết do tui tổng hợp từ mấy bài viết trên web nước ngoài , viết theo lối nôm na dễ hiểu , có sai sót gì mời các bạn vào bình luận

(bài đã post trên amtech)


http://www.mbergerart.com/wyg/images/intel.jpg





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#


đoạn nào sai sẽ được sửa dần dần ;)

pumbaa
25-07-2006, 02:49
Tôi nghĩ nếu bro cho thêm công thức cơ bản vào thì có vẻ dễ hiểu hơn:

i/s = i/c x c/s

i: instruction c: cycle s: second

Tức là hiệu năng cuối cùng được đo = số instruction/ giây.

Thêm nữa là nếu được thì bro nói thêm công thức hiệu năng năng của dòng X86 được tính ra sao ;)

athlon26
25-07-2006, 03:56
Tôi nghĩ nếu bro cho thêm công thức cơ bản vào thì có vẻ dễ hiểu hơn:

i/s = i/c x c/s

i: instruction c: cycle s: second

Tức là hiệu năng cuối cùng được đo = số instruction/ giây.

Thêm nữa là nếu được thì bro nói thêm công thức hiệu năng năng của dòng X86 được tính ra sao ;)


update công thức này vào bài luôn

thực ra bản chất cũng như nhau thôi

còn công thức tính hiệu năng x86 thì tôi chưa tìm hiểu đến , hi vọng sẽ update thêm sau

mọi người có góp ý gì cứ tiếp tục nhé

ThangMMM
25-07-2006, 11:08
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)

athlon26
25-07-2006, 11:28
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)

cám ơn bro đã góp ý


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

ThangMMM
25-07-2006, 15:07
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


Thực ra, cũng có một giải pháp được đưa ra để khắc phục nhược điểm khi xử lý các lệnh phụ thuộc trong cấu trúc pipeline dài, đó là sử dụng vùng đệm đích rẽ nhánh BTB. Khi phát hiện ra 2 lệnh phụ thuộc nhau lại được xử lý kế tiếp nhau trong pipeline, trong quá trình tống các lệnh khác ra khỏi pipeline như đã nói ở trên để nạp lại lệnh 2, các lệnh này sẽ được chuyển sang BTB, và được lưu giữ lại toàn bộ trạng thái hiện thời như kết quả giải mã, vị trí trong pipeline. Khi nạp lại vào pipeline để xử lý, các lệnh này sẽ không phải xử lý lại từ đầu mà sẽ xử lý đúng kết quả và vị trí mà nó đã tồn tại trước khi bị tống ra ngoài. Tuy nhiên phương pháp này chỉ làm giảm bớt chút ít chứ không thể khắc phục được hoàn toàn nhược điểm của long pipeline

ls2
25-07-2006, 17:24
bro ThangMMM chỉ ra khá chính xác vì sao kiến trúc pipeline dài lại bất lợi hơn kiến trúc pipeline ngắn; chứ nói "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" thì không được đúng cho lắm.

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).

athlon26
25-07-2006, 20:07
chứ nói "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" thì không được đúng cho lắm.



cái này chắc ko sai , mình có đọc được trong 1 bài trên net http://www.behardware.com/articles/623-2/intel-core-2-duo-test.html

pipeline càng nhiều tầng thì độ trễ khi truy xuất vào cache hoặc vào Ram càng lớn , từ đó dẫn đến xét tổng quát thì số IPC giảm đi. Có thể đó chỉ là 1 trong các lí do nhưng mình nghĩ IPC giảm là đúng , vì nếu kiến trúc pipeline dài mà số IPC lại tăng nữa thì ko logic --> cứ việc tăng stage pipeline lên là giải quyết vẫn đề

cái này chắc là do sự tiên đoán rẽ nhánh (hay predilection gì đó ) trở nên phức tạp khi pipeline dài như bro ThangMMM vừa nói , cũng chính vì thế mà với netburst cache L2 lúc nào cũng quan trọng , xeon còn có cả L3

athlon26
25-07-2006, 20:44
uhm.........vậy vì sao mà AMD k8 lại hơn hản P4 dzị ở đây ý nói chong việc tiên đoán

cái này đầu tiên là do k7, k8 là kiến trúc pipeline ngắn đã nên vấn đề xóa nạp ống pipeline giữa các lệnh + tiên đoán loại lệnh và lưu kết quả ko quan trọng như netburst --> cũng ko cần nhiều cache như netburst

cụ thể nữa thì đợi mấy bro kia vào :D

ThangMMM
25-07-2006, 22:01
trong việc tiên đoán lệnh, AMD K8 mạnh hơn P4 vì nhiều lí do. Lí do đầu tiên chính là từ "phong cách" làm việc của CPU K8. CPU K8 làm việc ở xung rất thấp so với P4 nên để có hiệu năng ngang ngửa, hiệu suất trên mỗi xung của K8 phải lớn hơn so với P4. Để đạt đựơc hiệu suất cao, AMD đã đầu tư rất nhiều để cải tiến và nâng cấp bộ tiên đoán nhánh. Còn intel cũng có BPU, nhưng khả năng của BPU intel kém xa AMD do intel chủ trương tăng clock lên để khắc phục nhược điểm của BPU

Nói chi tiết hơn một chút về BPU thì như sau:

Cơ chế xử lý lệnh của CPU: lệnh được tìm và nạp vào hệ thống đường ống của đơn vị thực hiện lệnh từ bộ đệm lệnh ( L1 Instruction Cache ). Lệnh này thông qua các bước như nhận lệnh, giải mã lệnh 1, giải mã lệnh 2..v.v... trong đường ống ( hệ thống đường ống có bao nhiêu "bậc" thì sẽ có bấy nhiêu tiến trình mà lệnh cần phải được thực hiện) sẽ đến đơn vị thực hiện lệnh ( Execute Unit), chính là các ALUs. Sau khi ALU đã thực hiện xong lệnh, kết quả của lệnh này sẽ được nạp vào bộ đệm dữ liệu (L1 Data Cache). Có hai loại lệnh chính, đó là lệnh độc lập và các lệnh phụ thuộc. Lệnh độc lập là những lệnh mà kết quả của chúng sau khi xử lý xong có thể được xuất ngay ra đơn vị khác, còn các lệnh phụ thuộc thì kết quả của lệnh trước sau khi được xử lý xong lại được nạp lại vào hệ thống đường ống một lần nữa, đóng vai trò chỉ thị/dữ liệu của lệnh tiếp theo. Mặt khác, bộ xử lý AMD64 có kiến trúc thực thi lệnh song song-liên tiếp (superscalar architechture), nghĩa là đơn vị thực hiện lệnh của nó bao gồm nhiều ALU ( 3 ALUs), và trong các đường ống thì các quá trình xảy ra kế tiếp nhau đối với các lệnh ( tức là khi lệnh thứ nhất đang trong công đoạn x thì lệnh thứ hai đã được nạp vào và thực hiện trong công đoạn x-1 ). Chính vì các ALU thực thi lệnh song song, tức là đồng thời với nhau, nên chúng chỉ có thể thực thi đồng thời các lệnh độc lập chứ không thể thực thi đồng thời các lệnh phụ thuộc. Hãy thử tưởng tượng: lệnh x và lệnh y là hai lệnh phụ thuộc, trong đó lệnh y cần phải có kết quả của lệnh x mới có thể tiến hành thực hiện, nhưng chúng lại được đồng thời nạp vào hai ALU khác nhau của Execute Unit. Như vậy đối với ALU thực hiện lệnh x sẽ không có vấn đề gì, nhưng với ALU thực hiện lệnh y thì nó sẽ phải chờ kết quả của lệnh x được thực hiện bởi ALU kia gửi sang, và điều đó có nghĩa trong khi ALU thứ nhất đang làm việc với lệnh x thì ALU thứ hai lại "nghỉ ngơi" để chờ kết quả từ ALU kia (nếu xét kỹ hơn thì ALU thứ hai ko hề "nghỉ ngơi" mà nó vẫn làm việc. Nó sẽ cất lệnh y này lại tại một vùng đệm đặc biệt, sau đó nó tìm và nạp vào một lệnh khác để xử lý, sau khi đã có kết quả của lệnh x từ ALU thứ nhất thì nó lại nạp lệnh y này lại và tiến hành xử lý, tuy nhiên điều này cũng làm giảm tốc độ của hệ thống rất nhiều vì ALU phải xoá toàn bộ lệnh đã nạp trong đường ống và tiến hành nạp lại từ đầu 1 lệnh khác). Hơn thế nữa, thời gian để kết quả của lệnh x đi từ ALU thứ nhất sang ALU thứ hai cũng lâu hơn để nó quay trở lại chính ALU thứ nhất, nên tóm lại, khi các lệnh phụ thuộc nhau lại được tiến hành đồng thời trong các ALU độc lập nhau thì tốc độ sẽ giảm đi rất nhiều. Để có thể tránh hiện tượng này, điều quan trọng là trong bộ xử lý phải có một đơn vị phân tích các lệnh đang được lưu trữ trong bộ đệm lệnh, xem lệnh nào là lệnh độc lập, lệnh nào là lệnh phụ thuộc. Các lệnh độc lập sẽ được bố trí để chúng có thể cùng một lúc đi vào các ALU khác nhau, còn các lệnh phụ thuộc thì lại được bố trí để đi vào cùng 1 ALU, và các lệnh cần phải có kết quả từ lệnh trước sẽ được xếp ở sau. Đơn vị phân tích này chính là bộ tiên đoán nhánh - Branch Prediction Unit. Có hai điểm cần lưu ý đối với bộ tiên đoán nhánh trong bộ xử lý AMD64, thứ nhất: mặc dù đã được cải tiến nhiều, nhưng bản chất của bộ tiên đoán nhánh vẫn là "tiên đoán" (do trong giai đoạn lệnh đang ở trong bộ đệm lệnh chúng vẫn chưa được giải mã chính xác nên việc phân loại lệnh độc lập- lệnh phụ thuộc và sắp xếp lệnh chỉ mang tính chất tương đối) nên không thể tránh khỏi hoàn toàn hiện tượng nêu trên, và thứ hai là do bộ tiên đoán lệnh được cải tiến, nên chúng cần phải phân tích rất nhiều lệnh mới đạt được hiệu suất tối ưu, và do đó bộ đệm lệnh ( L1 Instruction Cache) cũng như bộ đệm dữ liệu ( L1 Data Cache) được thiết kế lớn hơn nhiều so với các bộ đệm L1 ở thế hệ AMD K7 và P4

athlon26
25-07-2006, 22:20
chết rồi ko edit được nữa vì thêm post của bro ThangMMM thì bài sẽ quá 10000 từ

Opteron
25-07-2006, 22:27
em không biết nhiều về CPU lắm
các anh cho em hỏi, Pentium 4 cần cache L2 lớn để nạp dữ liệu chờ, K8 cần cache L1 lớn để tiên đoán (theo như em hiểu khi đọc hết đống trên)
=> Xeon dùng cache L3 luôn, vậy cache L3 dùng làm gì? nếu cũng dùng để nạp dữ liệu chờ thì sao ko gom vào cache L2 luôn?

emtraisieunhan
26-07-2006, 10:34
cache l2 theo mình nghĩ là thiết kế phức tạp và tốn xu hơn nên người ta chỉ thiết kế vừa đủ thôi........

MINHTAMLE
26-07-2006, 14:32
Dựa trên nguyên tắc làm việc của vi kiến trúc NetBurst. Lượng cache L2 của CPU rất quan trọng, với pipeline dài tới mức như thế, việc dự đoán rẽ nhánh sai nhiều sẽ dẫn tới lượng cache L2 bị hết rất nhanh vì phải trao đổi với mem thường xuyên hơn. Prescott tăng cache L2 lên gấp đôi,gấp bốn (1MB,2MB) chắc chắn sẽ phần nào bù lấp việc IPC của nó thấp hơn của Northwood. Nếu không tăng lượng cache L2 lên như thế, với pipeline dài tới 30 bước của mình, Prescott xài cache L2 hết rất nhanh, thường thì CPU EE thêm L3 vì L2 không đủ xài, Vi kiến trúc Intel core trước mắt ko cần đến L3…
mình nói zị ko biết đúng không?

Opteron
26-07-2006, 18:33
nhưng em đang hỏi vụ L3 Cache cơ mà!!!

nowforever
27-07-2006, 17:33
Source : http://www.itiusa.com/default.aspx?section=NEWS&page_no=13

L2 Cache – The size of 2nd level cache. L2 Cache is ultra-fast memory that buffers information being transferred between the processor and the slower RAM in an attempt to speed these types of transfers.

L3 Cache – The size of 3rd level cache, typically larger then L2. L3 Cache is ultra-fast memory that buffers information being transferred between the processor and the slower RAM in an attempt to speed these types of transfers. Integrated Level 3 cache provides a faster path to large data sets stored in cache on the processor. This results in reduced average memory latency (delay) and increased throughput for larger, high-end, desktop workloads.

Theo như mình hiểu, L3 cache sẽ là bộ đệm giữa memory và cache L2, việc này làm giảm thiểu độ trễ giữa L2 cache và memory. Nếu tăng quá nhiều cache L2, CPU sẽ phải tìm kiếm nhiều hơn trong cache dẫn đến tốc độ xử lý không dc cao, đó cũng là lý do người ta tách cache L1 và L2 (ngoài ra, còn do chức năng của cache L1 rõ ràng hơn, trước đây, L1 dính trên CPU còn L2 thì trên main). thường thì cache L1 < L2 < L3. L3 sẽ có ích khi data tính toán lớn ... Ngoài ra, về mặt sx, việc tích hợp thêm L3 vẫn dễ hơn việc tăng L2 -> giảm chi phí sx CPU.

Angelika
27-07-2006, 17:39
L3 sẽ có ích khi data tính toán lớn ... Ngoài ra, về mặt sx, việc tích hợp thêm L3 vẫn dễ hơn việc tăng L2 -> giảm chi phí sx CPU.

Nhưng tăng latency phải ko nhỉ? L3 trên CPU server có lý vì response time của server ko quan trọng như desktop mà chú trọng vào throughput nên L3 tăng số lượng cache thì data flow smooth hơn à ?

MINHTAMLE
27-07-2006, 21:10
L3 ngoài việc giàm thiểu độ trễ giửa L2 cache và memory còn phải giải quyết hậu qủa của bộ tiên đoán rẻ nhánh (Branch Prediction Unit) sai, sai là do L1 Data và L1 Trace gặp những data lớn xen kẽ với những phép toán số thực dấu chấm động (FPU) mà ALU (arithmetic-logic unit) chỉ là đơn vị xử lý số nguyên! Thế nên L3 chỉ có trong Xeon và P4EE xài tốt khi gặp các ứng dụng: Maya, 3DS, …

1413
30-07-2006, 14:58
vậy theo các bạn thì với các ứng dụng hiện tại và các ứng dụng cho văn phòng / gia đình cơ bản, P4 C vẫn làm việc tốt hơn P4 D phải không ?
(chỉ so sánh về CPU các thành phần khác bỏ qua)

emtraisieunhan
30-07-2006, 18:12
gia đình cơ bản với văn phòng cái nào chả rứa :D

1413
31-07-2006, 03:23
thì cơ "bản đại" loại như game vớ vẩn hay cao lắm đem convert mp3 hay burn CD mà thôi.

Nếu nói thuyết trên thì khi chạy nhiều ứng dụng 1 lúc (đòi hỏi nhiều thread hoạt động "song song") thì cpu p4C vẫn nhỉnh hơn cpu P4D (cùng xung và chạy df). Không biết mình hiểu có đúng không nhỉ

emtraisieunhan
31-07-2006, 12:31
cha này hình như là pa MegaByte bên Gamevn :D

1413
01-08-2006, 03:03
ơ thế thì, core pressy s478 gọi là gì ?

@nhớ dai nhỉ, gamevn tháng vô được 1 lần mà cũng nhớ

MINHTAMLE
01-08-2006, 14:06
Prescott dù là S478 hay vẫn gọi là P4E

emtraisieunhan
01-08-2006, 17:08
tưởng gọi P4C :|

MINHTAMLE
01-08-2006, 20:18
P4C là northwood S478 có HT

1413
01-08-2006, 22:48
thế P4D là dành cho dual core à ?
hmm , đánh kí hiệu hơi bị kì nhỉ

P4A = Willy
P4B = Woody
P4C = Woody (HT)
P4D = unknow/dual core (chả biết, chưa cập nhật kiến thức)
P4E = Pressy

MINHTAMLE
02-08-2006, 07:50
Xem cái này:
www.xtremevn.com/forum/showthread.php?t=2108

emtraisieunhan
02-08-2006, 08:30
D là dual mà kì gì chớ từ lúc ra nó đã gọi là pentium D gòi có gọi Pentium 4 dual core đâu :D

athlon26
02-08-2006, 08:41
trong link của MINHTAMLE post lên đã có đủ hết thông số các core intel đó

no spam plz :)

banvatoi_hi
10-03-2008, 23:01
P4A = Willy
P4B = Woody
P4C = Woody (HT)
P4D = unknow/dual core (chả biết, chưa cập nhật kiến thức)
P4E = Pressy

Trong mấy con này con nào ngon nhất nhỉ ? ví dụ Pen IV 2.4 loại nào là mạnh nhất
A, B,C,D,E nghe nói mấy chú xếp sức mạnh theo thứ tự bảng chữ cái??
có phải ko ?

xuantam
11-03-2008, 13:02
Pentium D 900 Presler ngon nhất, best là Pentium Extreme Edition 965 xung 3.73Ghz
Dòng Pen D 800 Smithfield 90nm ra trước đó bị phàn nàn vì tốn điện, hiệu năng thấp, nóng ==> Presler 65nm ra thay thế

có main xịn thì lên Core 2 Duo là ngon nhất, tất cả mấy dòng kia cổ đại hết rồi. Xét về hiệu năng, tiêu thụ điện, giá cả thì ko con nào ngon bằng Pentium-Dualcore nhân Allendale dùng kiến trúc Core, OC lại đơn giản :lol:

nguyenhaiduong080808
06-11-2012, 22:40
Tôi nghĩ nếu bro cho thêm công thức cơ bản vào thì có vẻ dễ hiểu hơn:

i/s = i/c x c/s

i: instruction c: cycle s: second

Tức là hiệu năng cuối cùng được đo = số instruction/ giây.

Thêm nữa là nếu được thì bro nói thêm công thức hiệu năng năng của dòng X86 được tính ra sao ;)

Các bác có các cái hình về pipeline, phân tích nó mới rõ. Chứ nói ko thế này cũng khó hình dung lắm. Cái này đúng là môn thầy Khánh phó khoa rồi :D