Tại sao bạn không thể có cả hướng dẫn cao trên mỗi chu kỳ và tốc độ xung nhịp cao?


37

Huyền thoại Megahertz trở thành một chiến thuật quảng cáo do sự khác biệt giữa bộ xử lý INTEL 8086 của PC và bộ xử lý Rockwell 6502 của Apple. 8086 chạy ở mức 4,77 MHz trong khi 6502 chạy ở mức 1 MHz. Tuy nhiên, hướng dẫn trên 6502 cần ít chu kỳ hơn; Trên thực tế, nó ít hơn rất nhiều so với 8086. Tại sao một số hướng dẫn cần ít chu kỳ hơn? Và tại sao các hướng dẫn của 6502, cần ít chu kỳ hơn, lại được kết hợp với bộ xử lý đạp xe nhanh của 8086?

Bài viết của Wikipedia để được hướng dẫn mỗi chu kỳ (IPC) cho biết

Các yếu tố chi phối IPC
Một mức hướng dẫn nhất định mỗi giây có thể đạt được với IPC cao và tốc độ xung nhịp thấp ... hoặc từ IPC thấp và tốc độ xung nhịp cao.

Tại sao bạn không thể có cả hướng dẫn cao trên mỗi chu kỳ và tốc độ xung nhịp cao?

Có lẽ điều này có liên quan đến chu kỳ đồng hồ là gì? Wikipedia đề cập đến đồng bộ hóa các mạch? Không chắc điều đó có nghĩa là gì.

Hoặc có lẽ điều này có liên quan đến cách một đường ống hoạt động? Tôi không chắc tại sao các hướng dẫn trong một đường ống ngắn lại khác với các hướng dẫn trong một đường ống dài.

Bất kỳ cái nhìn sâu sắc sẽ là tuyệt vời! Chỉ cần cố gắng để hiểu kiến ​​trúc đằng sau huyền thoại. Cảm ơn!

Tài liệu tham khảo:

Hướng dẫn trên mỗi chu kỳ so với số lượng chu kỳ tăng

http://en.wikipedia.org/wiki/In thi_per_ Motorcycle

http://en.wikipedia.org/wiki/Clock_ Motorcycle


1
> Tại sao một số hướng dẫn cần ít chu kỳ hơn? RISC / CISC (tốt, sắp xếp ). Và tại sao các hướng dẫn của 6502, cần ít chu kỳ hơn, lại được kết hợp với bộ xử lý đạp xe nhanh của 8086? Họ có thể và có. Vấn đề là một khi bạn đã thiết lập một cơ sở, thật khó để bỏ mọi thứ và bắt đầu mô hình tiếp theo từ đầu.
Synetech

@Synetech, intel kinda sorta đã làm điều đó bằng cách trình bày một tập lệnh CISC cho các lập trình viên, sau đó chuyển đổi nó thành các hướng dẫn của RISCier trên chip
soandos

Khi tôi nói rằng cả hai đã được kết hợp, tôi có nghĩa là các nhà sản xuất chip hoàn toàn khác nhau. Tôi không có một danh sách trong tay, nhưng đã có những người khác (không phải Intel / AMD) đã làm những việc như thế. (Hầu hết mọi người quên rằng có rất nhiều nhà sản xuất chip vì Intel và AMD hiện đang thống trị thị trường máy tính để bàn.)
Synetech

Câu trả lời:


21

tl; dr

Đường ống ngắn hơn có nghĩa là tốc độ xung nhịp nhanh hơn, nhưng có thể làm giảm thông lượng. Ngoài ra, hãy xem câu trả lời số 2 và 3 ở phía dưới (chúng ngắn, tôi hứa).

Phiên bản dài hơn:

Có một vài điều cần xem xét ở đây:

  1. Không phải tất cả các hướng dẫn mất cùng một lúc
  2. Không phải tất cả các hướng dẫn đều phụ thuộc vào những gì đã được thực hiện ngay lập tức (hoặc thậm chí mười hoặc hai mươi) hướng dẫn

Một đường ống rất đơn giản (những gì xảy ra trong các chip Intel hiện đại vượt quá phức tạp) có một số giai đoạn:

Tìm nạp -> Giải mã -> Truy cập bộ nhớ -> Thực thi -> Ghi lại -> Cập nhật bộ đếm chương trình

Tại mỗi -> có một chi phí thời gian phát sinh. Ngoài ra, mỗi tích tắc (chu kỳ đồng hồ), mọi thứ đều chuyển từ giai đoạn này sang giai đoạn tiếp theo, vì vậy giai đoạn chậm nhất của bạn trở thành tốc độ cho TẤT CẢ các giai đoạn (nó thực sự trả tiền cho chúng để có độ dài tương tự nhất có thể).

Giả sử bạn có 5 hướng dẫn và bạn muốn thực hiện chúng (ảnh chụp từ wikipedia, ở đây bản cập nhật PC không được thực hiện). Nó sẽ trông như thế này:

nhập mô tả hình ảnh ở đây

Mặc dù mỗi lệnh chỉ mất 5 chu kỳ đồng hồ để hoàn thành, một lệnh hoàn thành sẽ ra khỏi đường ống mỗi chu kỳ. Nếu thời gian cho mỗi giai đoạn là 40 ns và 15 ns cho các bit trung gian (sử dụng đường ống sáu giai đoạn của tôi ở trên), sẽ mất 40 * 6 + 5 * 15 = 315 ns để có được lệnh đầu tiên.

Ngược lại, nếu tôi loại bỏ hoàn toàn đường ống (nhưng giữ mọi thứ khác như cũ), sẽ chỉ mất 240 ns để có được hướng dẫn đầu tiên. (Sự khác biệt về tốc độ này để đưa ra lệnh "đầu tiên" được gọi là độ trễ. Nó thường không quan trọng bằng thông lượng, đó là số lượng lệnh trong một giây).

Mặc dù vậy, sự khác biệt thực sự là trong ví dụ về đường ống dẫn, tôi nhận được một phép xử lý mới (sau lần đầu tiên) cứ sau 60 ns. Trong trường hợp không có đường ống, phải mất 240 lần. Điều này cho thấy các đường ống rất tốt trong việc cải thiện thông lượng.

Tiến lên một bước nữa, dường như trong giai đoạn truy cập bộ nhớ, tôi sẽ cần một đơn vị bổ sung (để thực hiện tính toán địa chỉ). Điều đó có nghĩa là nếu có một hướng dẫn không sử dụng giai đoạn mem theo chu kỳ đó, thì tôi có thể thực hiện một bổ sung khác. Do đó, tôi có thể thực hiện hai giai đoạn thực thi (với một trong giai đoạn truy cập bộ nhớ) trên một bộ xử lý trong một tích tắc (lập lịch là một cơn ác mộng, nhưng chúng ta đừng đến đó. Ngoài ra, giai đoạn cập nhật PC cũng sẽ cần một đơn vị bổ sung trong trường hợp nhảy, vì vậy tôi có thể thực hiện ba trạng thái thực thi bổ sung trong một tích tắc). Bằng cách có một đường ống dẫn, nó có thể được thiết kế sao cho hai (hoặc nhiều) hướng dẫn có thể sử dụng các giai đoạn khác nhau (hoặc các bước nhảy vọt, v.v.), tiết kiệm thời gian quý báu.

Lưu ý rằng để thực hiện điều này, các bộ xử lý thực hiện rất nhiều "phép thuật" ( thực hiện theo thứ tự , dự đoán nhánh và nhiều hơn nữa), nhưng điều này cho phép nhiều hướng dẫn đi ra nhanh hơn mà không cần đường ống (lưu ý rằng các đường ống quá lâu rất khó quản lý và phải chịu chi phí cao hơn chỉ bằng cách chờ đợi giữa các giai đoạn). Mặt trái là nếu bạn thực hiện đường ống quá dài, bạn có thể nhận được tốc độ đồng hồ điên rồ, nhưng mất đi nhiều lợi ích ban đầu (có cùng loại logic có thể tồn tại ở nhiều nơi và được sử dụng cùng một lúc ).

Câu trả lời số 2:

Bộ xử lý SIMD (nhiều lệnh dữ liệu) (giống như hầu hết các GPU) thực hiện rất nhiều công việc trên nhiều bit thông tin, nhưng phải mất nhiều thời gian hơn để thực hiện. Đọc trong tất cả các giá trị mất nhiều thời gian hơn (có nghĩa là đồng hồ chậm hơn, mặc dù bù này bằng cách có một bus rộng hơn ở một mức độ nào đó) nhưng bạn có thể nhận được nhiều hướng dẫn hơn được thực hiện cùng một lúc (hướng dẫn hiệu quả hơn cho mỗi chu kỳ).

Câu trả lời số 3:

Bởi vì bạn có thể "gian lận" một cách kéo dài số lượng chu kỳ một cách giả tạo để bạn có thể thực hiện hai hướng dẫn mỗi chu kỳ (chỉ giảm một nửa tốc độ đồng hồ). Cũng có thể chỉ làm một cái gì đó cứ sau hai tích tắc trái ngược với một (cho tốc độ xung nhịp gấp 2 lần, nhưng không thay đổi hướng dẫn trong một giây).


3
Đường ống ngắn có nghĩa là tốc độ đồng hồ chậm hơn ! Pentium 4 có đồng hồ cao do đường ống dài, đây là WP: "NetBurst khác với P6 (Pentium III, II, v.v.) bằng cách sử dụng đường ống dẫn rất sâu để đạt tốc độ xung nhịp rất cao". Vấn đề là bạn làm ít mỗi giai đoạn để đạt được tốc độ cao. Tuy nhiên, điều này không chứng minh được là khả thi và Intel đã mất động lực rất lớn đối với AMD do điều này. Họ đã quay trở lại kiến ​​trúc Pentium 3 và đưa ra "Core".
stolsvik

@stolsvik, bạn có thể giải thích điều này? Nó không có ý nghĩa với tôi (có ít giai đoạn xen kẽ có nghĩa là tất cả những thứ khác bằng nhau, chu kỳ đồng hồ sẽ ngắn hơn, cho tốc độ đồng hồ cao hơn)
soandos

4
Một giai đoạn đường ống được thực hiện trên mỗi chu kỳ đồng hồ ; Toàn bộ đường ống tiến lên một bước trên mỗi đồng hồ - tìm nạp các hướng dẫn mới ở phía dưới, "phát ra" các hướng dẫn đã hoàn thành ở trên cùng. Do đó, ý tưởng với Pentium4 là thực hiện các bước rất nhỏ để thực hiện nhanh chóng, cho đồng hồ cao, nhưng do đó đòi hỏi một đường ống dài. Manh mối với một đường ống dẫn (tất cả các bộ xử lý sử dụng một) là bạn có một số hướng dẫn đang được xử lý bất cứ lúc nào. Một đường ống dài có nghĩa là nhiều hướng dẫn đang được tiến hành - và nếu dự đoán nhánh không thành công, thì bạn sẽ phải xả toàn bộ đường ống.
stolsvik

Đối với câu trả lời số 2 của bạn, CPU chỉ truy cập dữ liệu thông qua bộ đệm (quyền truy cập bộ nhớ thường trong suốt theo quan điểm của hướng dẫn). Làm chậm tần số xung nhịp sẽ không ảnh hưởng đến thời gian dữ liệu sẽ đến từ RAM (nếu không có trong bộ đệm). Ngoài ra, độ rộng của bus chỉ ảnh hưởng đến tốc độ hoạt động của SIMD so với kích thước của toán hạng của bạn (nghĩa là tôi có thể tải 8 toán hạng 8 bit trên bus 64 bit một lần, nhưng tôi vẫn phải tải thủ công 8 giá trị 64 bit nếu tôi có toán hạng 64 bit).
Đột phá

2
Ngoài ra đối với câu trả lời số 1, khi bạn nói "nếu có một hướng dẫn không sử dụng giai đoạn mem theo chu kỳ đó, thì tôi có thể thực hiện một bổ sung khác", điều này là sai. Thực hiện ngoài đơn hàng được áp dụng ở cấp hướng dẫn, không phải cấp độ hoạt động vi mô. Nếu một lệnh đã yêu cầu hai lần thực thi trong đường ống, điều này sẽ gây ra bong bóng trong đường ống . Cuối cùng, kiến ​​trúc x86 có ALU riêng để tính các địa chỉ bộ nhớ đang hoạt động trong khi đọc / ghi bộ nhớ (cho phép [EBX+ECX*4+100]định địa chỉ kiểu).
Đột phá

8

Tôi rất đơn giản hóa điều này, nhưng điểm quan trọng cần nhớ là những thuật ngữ này đang so sánh táo với cam. "Chu kỳ" không phải là một đơn vị đo lường thống nhất duy nhất giống nhau trên tất cả các bộ xử lý, giống như "giây" là một phép đo thời gian thống nhất. Thay vào đó, một chu trình đại diện cho một đơn vị công việc nhất định, được định nghĩa hơi tùy tiện nhưng bị ràng buộc bởi sự phức tạp của thiết kế đường ống và tất nhiên là bằng vật lý.

Trong nhiều trường hợp, thực hiện nhiều công việc trong một chu kỳ có thể cho phép bạn xóa toàn bộ đường ống. Nếu thành công, điều này có nghĩa là chu kỳ tiếp theo của bạn sẽ không được tối ưu hóa vì bạn phải lấp lại đường ống, điều này có thể mất một thời gian.

Tôi có thể thiết kế bộ xử lý rất đơn giản xử lý một giai đoạn của một lệnh RISC mỗi chu kỳ và nếu đây là cơ sở của CPU của tôi, tôi có thể có thể đạt được chu kỳ rất, rất cao mỗi giây do độ phức tạp giảm của " chu kỳ ".

Các chi tiết đi sâu vào nhiều vật lý và kỹ thuật điện mà tôi không thực sự hiểu, nhưng hãy nhớ rằng tốc độ xung nhịp không đạt được bằng cách chỉ ngây thơ thêm điện áp đầu vào vào bộ xử lý và hy vọng điều tốt nhất. Ít nhất, hồ sơ nhiệt là một mối quan tâm cần thiết khác.


Điều này không thực sự trả lời câu hỏi của anh ấy (không liên quan gì đến lý do tại sao mọi thứ không thể được tăng tốc). Anh ấy đang hỏi làm thế nào nhiều chu kỳ hơn! = Công việc nhiều hơn mọi lúc
soandos

Tuy nhiên, câu trả lời này không giải quyết được một vấn đề mà tôi không thấy trong các câu trả lời khác, đó là nói về việc bao gồm các bộ hướng dẫn cụ thể hoàn thành các hoạt động ở ít chu kỳ đồng hồ hơn và khả năng đo chu kỳ đồng hồ dựa trên các bộ hướng dẫn chậm nhất có thể không được hiệu quả (Tôi có thể rất sai mặc dù ... Tôi thấy kiến ​​trúc rất hấp dẫn nhưng tôi sẽ không coi mình là một chuyên gia bằng mọi cách)
Stephen R

5

Đây là một lời giải thích rất đơn giản (có lẽ quá đơn giản): Giả sử bạn có một công việc cụ thể phải làm, hãy nói thêm hai số 32 bit. Bạn có thể thực hiện hai cách tiếp cận. Bạn có thể chia nó thành một số lượng rất lớn các bước rất nhỏ hoặc bạn có thể chia nó thành một số lượng nhỏ các bước rất lớn.

Ví dụ: bạn chỉ có thể nói "thêm hai số". Bây giờ bạn chỉ có một bước. Nhưng bước đó có nhiều phần và sẽ mất nhiều thời gian hơn để làm. Vì vậy, bạn có hướng dẫn cao cho mỗi chu kỳ - một trong trường hợp này. Nhưng tốc độ đồng hồ của bạn không thể cao vì bạn có nhiều việc phải làm trong chu trình đó.

Ngoài ra, bạn có thể nói: "Lấy số thứ nhất vào một thanh ghi. Sau đó tìm nạp số thứ hai. Sau đó thêm các bit có trọng số thấp nhất. Sau đó thêm bit có ý nghĩa thứ hai ít nhất với số mang từ trước. Sau đó thêm số thứ ba ít nhất ... Sau đó, thêm các bit quan trọng nhất. Nếu có carry, đặt cờ tràn. Sau đó ghi kết quả vào bộ nhớ. " Bây giờ bạn có một số lượng lớn các bước. Nhưng mỗi bước có thể nhanh vô lý. Vì vậy, bạn có hướng dẫn thấp cho mỗi chu kỳ (1/36 hoặc lâu hơn trong trường hợp này). Nhưng tốc độ đồng hồ của bạn có thể rất cao vì mỗi chu kỳ chỉ có một chút rất nhỏ để làm.

Để có cả hướng dẫn cao trên mỗi chu kỳ và tốc độ xung nhịp cao, bạn phải chia một hướng dẫn phức tạp thành một số lượng rất nhỏ các bước rất đơn giản. Nhưng điều đó không thể được thực hiện bởi vì hướng dẫn rất phức tạp.

Các giao dịch cụ thể và số chu kỳ cụ thể thực tế khác nhau rất nhiều vì các CPU hiện đại được hướng dẫn theo đường ống và chồng chéo. Nhưng ý tưởng cơ bản là chính xác.


2

Bạn có thể có cả hướng dẫn cao trên mỗi chu kỳ và tốc độ xung nhịp cao. Nơi bạn chạy vào các giới hạn là khi độ trễ lan truyền của mạch kỹ thuật số vượt quá độ rộng xung của một chu kỳ đồng hồ. Điều này có thể được khắc phục bằng cách tăng điện áp CPU, nhưng cần lưu ý rằng điều này sẽ làm tăng mức tiêu thụ điện năng (và do đó, tản nhiệt).

Vì vậy, nếu bạn muốn tốc độ xung nhịp nhanh hơn, bạn phải tăng điện áp (tăng tốc độ trôi điện tử ) để giảm độ trễ lan truyền. Nếu độ trễ này vượt quá chu kỳ xung nhịp, rất có thể CPU sẽ không hoạt động như mong đợi và phần mềm chạy trên nó sẽ bị sập hoặc ném ngoại lệ. Tuy nhiên, rõ ràng có một giới hạn đối với điện áp mà bạn có thể chạy qua bộ xử lý, và điều này được quyết định bởi chính thiết kế của CPU - chủ yếu là khả năng mang dòng điện của các đường dẫn điện bên trong.


Pipelining cho phép tốc độ xung nhịp cao hơn trong một số trường hợp, bởi vì mỗi lệnh được chia thành một số "hoạt động vi mô" nhỏ hơn. Các hoạt động vi mô này là các hoạt động rất đơn giản, sử dụng các mạch nhỏ hơn nhiều được kết nối với nhau trong một chuỗi (theo nghĩa vật lý, vì càng ít khoảng cách các electron cần di chuyển, thời gian trì hoãn thông qua một đơn vị con cụ thể càng ngắn).

Ưu điểm bổ sung cho CPU có đường ống là bạn có thể tăng đáng kể số lượng lệnh được thực hiện trên mỗi đơn vị thời gian, với chi phí thiết kế phức tạp hơn.

Về lý do tại sao một số hướng dẫn cần nhiều hay ít chu kỳ, nó phụ thuộc vào hướng dẫn bạn đang thực hiện. Ví dụ, trong tập lệnh x86, có một MOVSlệnh có thể di chuyển toàn bộ chuỗi trong bộ nhớ từ nơi này sang nơi khác. Rõ ràng, bạn không thể sao chép tức thời một chuỗi dài, nhưng bạn có thể bằng cách sao chép từng từ một, thực hiện nhiều chu kỳ đồng hồ. Do đó, MOVShướng dẫn mất một lượng thời gian khác nhau (tùy thuộc vào số lượng ký tự được sao chép).

Hiệu quả của các hoạt động đa chu kỳ ít đáng chú ý hơn đối với thiết kế RISC (tức là ARM) so với thiết kế CISC (tức là x86). Điều này là do các thiết kế dựa trên RISC sẽ chỉ có các hoạt động cơ bản được sử dụng phổ biến nhất và dễ dàng hơn nhiều để đạt được thông lượng của một lệnh trong mỗi chu kỳ.


1

Máy tính của bạn mất bao lâu để hoàn thành một tác vụ cụ thể không phụ thuộc vào tốc độ xung nhịp của máy tính ... nó phụ thuộc vào cách các đơn vị tính toán được thiết kế và chế tạo.

Tốc độ xung nhịp thực sự là một quyết định tùy ý (ít nhiều) do nhà thiết kế CPU đưa ra, đôi khi vì lý do chính đáng (hiệu quả), đôi khi cho những người nghèo (quảng cáo).

Giả sử một CPU đã cho có một hỗn hợp các hướng dẫn mất từ ​​1 đến 100 nano giây (ns) để hoàn thành. Bạn có thể đặt tốc độ xung nhịp sao cho 1 "tick" là 100 ns (10 MHz), nghĩa là mọi hướng dẫn sẽ hoàn thành trong đúng 1 tick. Tuy nhiên, nếu thời gian thực hiện lệnh được phân bổ đều, điều này có nghĩa là các đơn vị tính toán của bạn sẽ không hoạt động 50% thời gian (tốc độ thực hiện trung bình sẽ là 50ns, để lại 50ns còn lại của trạng thái nhàn rỗi). Mặt khác, nếu bạn đặt dấu kiểm của mình là 10ns, các hướng dẫn sẽ nằm trong khoảng từ 1 đến 10 tick, nhưng đơn vị sẽ không bao giờ nhàn rỗi hơn 9ns trước khi lệnh tiếp theo bắt đầu và mức nhàn rỗi trung bình sẽ là 5ns.

Trong quá trình phát triển, CPU sẽ được thiết kế để chạy ở một tốc độ nhất định, dựa trên mức độ CPU thực sự có khả năng thực hiện. Nếu bạn tăng hoặc giảm tốc độ xung nhịp, bạn thực sự không thay đổi số lượng công việc mà CPU có thể hoàn thành, bạn chỉ đang rối tung với tỷ lệ hiệu quả của nó.

(Và trước khi bạn khóc về việc ép xung CPU: điều này mang lại cho bạn hai lợi thế dẫn đến tăng tốc độ trong thế giới thực: hướng dẫn thực hiện nhanh (mất ít hơn 1 chu kỳ) kết thúc với thời gian thực hiện nhanh hơn và tất cả các hướng dẫn đều có thời gian nhàn rỗi. Trên thực tế, những thứ này có thể làm tăng số lượng công việc mà máy tính của bạn có thể thực hiện, nhưng bạn sẽ thấy rằng việc ép xung CPU bằng X% không phải lúc nào cũng tăng bằng X% trong công việc khi bạn đánh giá nó.)

TL; DR

Một CPU có thể hoàn thành công việc X trong một giây. Nếu bạn sử dụng tốc độ đồng hồ H và I IPC, chúng ta có I = X / H. Thay đổi H không thay đổi X, nhưng nó ảnh hưởng xấu đến tôi.


1
Tốc độ đồng hồ là xa quyết định tùy ý. Nó cần phải được lựa chọn cẩn thận như là một chức năng của điện áp cung cấp CPU, cũng như độ dài theo dõi IC (để tránh sự chậm trễ lan truyền quá mức).
Đột phá

Tôi nghĩ rằng bạn đã bỏ lỡ thực tế rằng CPU là một mạch kỹ thuật số đồng bộ . Các hướng dẫn không mất X nano giây (giả sử chu kỳ đồng hồ của bạn nhỏ hơn độ trễ lan truyền), mọi thứ xảy ra ở cạnh đồng hồ tăng hoặc giảm - hoặc cả hai. Hướng dẫn mất X chu kỳ, không phải X đơn vị thời gian. Vâng, bạn có thể sửa đổi một chu kỳ là bao lâu , nhưng sự khác biệt là những gì xảy ra khi nào. Và cuối cùng, khối lượng công việc mà CPU có thể làm trong một giây là chức năng của tốc độ xung nhịp, vì vậy công thức của bạn không thực sự kiểm tra ở đây.
cp2141

CPU là sự hợp nhất đồng bộ của một số đơn vị không đồng bộ. Các dấu đồng hồ được sử dụng để sắp xếp mọi thứ độc đáo, nhưng chúng không xác định thời gian thực hiện mất bao lâu ... Ví dụ, một số nguyên sẽ mất một khoảng thời gian nhất định dựa trên dòng điện phải đi qua CPU và tốc độ của bóng bán dẫn sẽ chuyển trạng thái. Kết quả là ĐỌC ở đồng hồ tiếp theo, nhưng tính toán thực tế được thực hiện không đồng bộ trong suốt thời gian đánh dấu.
Benjamin Chambers

0

Người ta không thể có cả hướng dẫn cao trên mỗi chu kỳ và tốc độ xung nhịp cao vì các yêu cầu trái ngược nhau.

Người ta có thể chỉ ra rằng, trong một xấp xỉ đầu tiên, IPC phụ thuộc vào độ phức tạp (A) của thiết kế như

IPC = một sqrt (A)

trong khi tần số tối đa (F) có thể đạt được bằng các thang đo thiết kế là [1]

F = 1 / {b + c sqrt (A)}

với các tham số a, b và c.

Vì vậy, việc tăng độ phức tạp của muarch làm tăng IPC với chi phí giảm tần suất làm việc, trong khi đó việc giảm độ phức tạp sẽ làm tăng tần suất theo chi phí của IPC. Điều này tương ứng với hai trường hợp cực đoan được đề cập trong bài viết trên wikipedia, nhưng wikipedia không đề cập đến tên: Brainiac và quỷ tốc độ.

  • Thiết kế Brainiac: IPC cao và tần số thấp
  • Tốc độ quỷ quỷ: Tần số cao và IPC thấp.

[1] Một số tác giả cho rằng biểu thức cho tần số là "1 / {b + c A}", nhưng trong cả hai trường hợp, việc tăng độ phức tạp sẽ làm giảm tần số tối đa có thể đạt được.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.