Làm cách nào để tính tốc độ xung nhịp trong bộ xử lý đa lõi?


23

Chẳng hạn, có đúng không khi nói rằng bộ xử lý có bốn lõi mỗi lõi chạy ở tần số 3GHz thực tế là bộ xử lý chạy ở tốc độ 12GHz?

Tôi đã từng có một cuộc tranh luận "Mac so với PC" (nhân tiện đó KHÔNG phải là trọng tâm của chủ đề này ... hồi đó là ở trường cấp hai) với một người quen đã khăng khăng rằng máy Mac chỉ được quảng cáo là máy 1Ghz vì họ là những chiếc G4 bộ xử lý kép, mỗi chiếc chạy ở tốc độ 500 MHz.

Vào thời điểm đó, tôi biết điều này là hogwash vì những lý do mà tôi nghĩ là rõ ràng với hầu hết mọi người, nhưng tôi chỉ thấy một bình luận trên trang web này về hiệu ứng của "6 lõi x 0,2GHz = 1,2Ghz" và điều đó khiến tôi suy nghĩ lại về việc liệu Có một câu trả lời thực sự cho điều này.

Vì vậy, đây là một câu hỏi ít nhiều về triết học / kỹ thuật sâu sắc về ngữ nghĩa của tính toán tốc độ đồng hồ. Tôi thấy hai khả năng:

  1. Trên thực tế, mỗi lõi thực hiện x tính toán mỗi giây, do đó tổng số phép tính là x (lõi).
  2. Tốc độ đồng hồ thay vì đếm số chu kỳ mà bộ xử lý trải qua trong không gian của một giây, miễn là tất cả các lõi đều chạy ở cùng một tốc độ, tốc độ của mỗi chu kỳ đồng hồ vẫn như nhau cho dù có bao nhiêu lõi tồn tại . Nói cách khác, Hz = (core1Hz + core2Hz + ...) / lõi.

Nhiều câu trả lời ở đây làm rất tốt việc giải thích lý do tại sao ví dụ bộ xử lý 4 nhân 2 GHz không nhất thiết phải bằng bộ xử lý 8 GHz đơn lõi. Tuy nhiên, tôi đang gặp khó khăn trong việc phân định tốc độ bộ xử lý đa lõi nên được xem xét như thế nào khi quyết định sự phù hợp của hệ thống đối với một ứng dụng liệt kê tốc độ và số lượng lõi cụ thể trong yêu cầu của nó? (ví dụ: Borderlands 2 yêu cầu bộ xử lý lõi kép 2,4 GHz. Chúng ta có nên mong đợi một lõi tứ tốc độ thấp hơn hoặc lõi đơn tốc độ cao hơn cũng sẽ làm như vậy không?) hoặc nó nên là một câu hỏi riêng biệt?
Iszi

@Iszi Đó phải là một câu hỏi khác, nhưng có khả năng Borderlands được tối ưu hóa cho nhiều hơn một luồng nếu chúng bao gồm "lõi kép" trong yêu cầu của chúng. Trong trường hợp đó, bộ xử lý lõi đơn sẽ không được khuyến nghị, nhưng không rõ liệu nó có thể tận dụng> 2 lõi hay không.
NRzingh

Điều quan trọng cần nhớ là tốc độ xung nhịp và số lõi không chỉ quyết định 'tốc độ' của bộ xử lý. Ví dụ, kích thước và tốc độ bộ đệm sẽ ảnh hưởng đến thời gian bộ xử lý dành để chờ hướng dẫn và dữ liệu. Ngoài ra, các hướng dẫn trên mỗi chu kỳ (theo một cách nào đó, 'hiệu quả', mặc dù khác biệt và liên quan đến hiệu quả năng lượng) cũng sẽ ảnh hưởng đến tốc độ tính toán. Các bộ xử lý khác nhau sẽ mất nhiều thời gian khác nhau để thực hiện cùng một lệnh.
Bob

Câu trả lời:


35

Lý do chính tại sao bộ xử lý lõi tứ 3GHz không bao giờ nhanh như lõi đơn 12 GHz là do cách thức hoạt động của bộ xử lý đó hoạt động, tức là đơn luồng hoặc đa luồng. Luật của Amdahl rất quan trọng khi xem xét các loại nhiệm vụ bạn đang chạy.

Nếu bạn có một nhiệm vụ vốn là tuyến tính và phải được thực hiện chính xác từng bước như (một chương trình đơn giản)

10: a = a + 1
20: goto 10

Sau đó, tác vụ phụ thuộc nhiều vào kết quả của lần vượt qua trước đó và không thể chạy nhiều bản sao của chính nó mà không làm hỏng giá trị 'a'vì mỗi bản sao sẽ nhận được giá trị 'a'tại các thời điểm khác nhau và viết lại theo cách khác. Điều này hạn chế tác vụ trong một luồng duy nhất và do đó, tác vụ chỉ có thể chạy trên một lõi đơn tại bất kỳ thời điểm nào, nếu nó chạy trên nhiều lõi thì xảy ra lỗi đồng bộ hóa. Điều này giới hạn ở mức 1/2 công suất cpu của hệ thống lõi kép, hoặc 1/4 trong hệ thống lõi tứ.

Bây giờ nhận một nhiệm vụ như:

10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10

Tất cả các dòng này là độc lập và có thể được chia thành 4 chương trình riêng biệt như chương trình đầu tiên và chạy cùng một lúc, mỗi dòng có thể sử dụng hiệu quả toàn bộ sức mạnh của một trong các lõi mà không gặp sự cố đồng bộ hóa nào, đây là luật của Amdahl đi vào nó

Vì vậy, nếu bạn có một ứng dụng đơn luồng thực hiện tính toán vũ lực, bộ xử lý 12GHz đơn lẻ sẽ chiến thắng, nếu bạn bằng cách nào đó có thể phân chia nhiệm vụ thành các phần riêng biệt và đa luồng thì 4 lõi có thể tiến gần đến, nhưng không hoàn toàn đạt được, hiệu suất tương tự, theo Luật của Amdahl.

Điều chính mà một hệ thống nhiều CPU mang lại cho bạn là khả năng đáp ứng. Trên một máy lõi đơn đang làm việc chăm chỉ, hệ thống có thể chậm chạp vì hầu hết thời gian có thể được sử dụng bởi một tác vụ và các tác vụ khác chỉ chạy trong các đợt ngắn giữa các tác vụ lớn hơn, dẫn đến một hệ thống có vẻ chậm chạp hoặc ướt át . Trên một hệ thống đa lõi, tác vụ nặng có một lõi và tất cả các tác vụ khác chơi trên các lõi khác, thực hiện công việc của chúng một cách nhanh chóng và hiệu quả.

Đối số của "6 nhân x 0,2GHz = 1,2Ghz" là rác rưởi trong mọi tình huống ngoại trừ khi các tác vụ hoàn toàn song song và độc lập. Có một số lượng tốt các nhiệm vụ rất song song, nhưng chúng vẫn đòi hỏi một số hình thức đồng bộ hóa. Handbrake là một trancoder video rất tốt trong việc sử dụng tất cả các CPU có sẵn nhưng nó đòi hỏi một quy trình cốt lõi để giữ cho các luồng khác chứa đầy dữ liệu và thu thập dữ liệu mà chúng được thực hiện.

  1. Trên thực tế, mỗi lõi thực hiện x tính toán mỗi giây, do đó tổng số phép tính là x (lõi).

Mỗi lõi có khả năng thực hiện x tính toán mỗi giây, giả sử khối lượng công việc là song song, trên một chương trình tuyến tính, tất cả những gì bạn có là 1 lõi.

  1. Tốc độ đồng hồ thay vì đếm số chu kỳ mà bộ xử lý trải qua trong không gian của một giây, miễn là tất cả các lõi đều chạy ở cùng một tốc độ, tốc độ của mỗi chu kỳ đồng hồ vẫn như nhau cho dù có bao nhiêu lõi tồn tại . Nói cách khác, Hz = (core1Hz + core2Hz + ...) / lõi.

Tôi nghĩ thật sai lầm khi nghĩ rằng 4 x 3GHz = 12GHz, đã cho phép toán học hoạt động, nhưng bạn đang so sánh táo với cam và các khoản tiền không đúng, chỉ đơn giản là không thể thêm vào nhau cho mọi tình huống. Tôi sẽ thay đổi nó thành 4 x 3GHz = 4 x 3GHz.


Bài đăng tuyệt vời .. Không thể bình chọn nhiều hơn 1+ :-(
Gopalakrishnan Subramani

Nhưng luật của amdahl là một mối quan tâm lập trình, gây ra bởi khóa, không phải là mối quan tâm về phần cứng. Nếu bạn không cần phải đồng bộ hóa, mỗi lõi có thể thực hiện các hướng dẫn nhanh nhất có thể. Người ta có thể thiết kế một chương trình song song (một chương trình đơn giản) sẽ được phân chia hoàn hảo giữa các lõi. Các nhà sản xuất phần cứng sẽ không quảng cáo giá trị thô này?
Justin Meiners

Để làm rõ, tôi hiểu lý do tại sao điều này trả lời câu hỏi tại sao 4 lõi ở 3 ghz không nhanh như vậy, trong thực tế là 12ghz, nhưng không phải là một phần của cách tính tốc độ xung nhịp cho đa lõi.
Justin Meiners

@JustinMeiners tốc độ đồng hồ trên mỗi lõi đơn giản là tốc độ xung nhịp mà lõi chạy. Không có phép tính kỳ diệu nào tương đương một lõi đơn với đa lõi. Nhiều lõi chỉ có nghĩa là bạn có thể chạy các tác vụ riêng biệt hơn cùng một lúc. Luật Amdahls được áp dụng vì phần mềm, việc đồng bộ hóa và khóa cần thiết sẽ ngăn tác vụ trở nên "hoàn hảo" trong phần cứng giống như phần mềm. Bộ nhớ cache và bộ nhớ dùng chung gây ra tranh chấp và khóa xảy ra.
Mokubai

@Mokubai Chỉ cần làm rõ, khi một nhà sản xuất liệt kê tốc độ xung nhịp, mỗi lõi riêng lẻ chạy ở tốc độ, đúng không?
Justin Meiners

6

Những người khác đã đưa ra một lập luận tốt từ quan điểm kỹ thuật. Thay vào đó, tôi sẽ tạo ra một vài sự tương tự đơn giản mà tôi hy vọng sẽ giải thích tại sao 4 * 3GHz không tương đương với 1 * 12GHz.

Ví dụ, một phụ nữ có thể sản xuất một em bé trong chín tháng. Chín phụ nữ sẽ có thể sản xuất một em bé trong một tháng? Không, bởi vì cử chỉ không thể song song (tốt, ít nhất là ở cấp độ công nghệ này).

Đây là một điều khác: Trong một nhà máy thủy điện tôi mới ghé thăm, một trong những máy phát điện đang được nâng cấp. Họ phải vận chuyển stator của máy phát điện bằng tàu. Một phần sáu của stato có thể được vận chuyển bằng xe tải, nhưng họ cần vận chuyển toàn bộ stato; vì vậy họ phải sử dụng một con tàu chứ không phải sáu chiếc xe tải.

Một trường hợp khác có thể là thời gian chính xác của các sự kiện. Đôi khi bộ xử lý máy tính được sử dụng làm bộ định thời chính xác (mặc dù thực tế không còn được khuyến nghị nữa, vì đồng hồ biến đổi trên hầu hết các bộ xử lý. Nên sử dụng bộ hẹn giờ sự kiện có độ chính xác cao). Nếu chúng ta giả sử rằng chúng ta có bộ xử lý với xung nhịp 12GHz tương đối ổn định, chúng ta có thể sử dụng nó để đo thời gian ở độ phân giải cao hơn nhiều so với trên bộ xử lý có xung nhịp 3GHz. Cho dù chúng tôi có bao nhiêu lõi 3GHz, chúng tôi sẽ không thể đạt được độ phân giải của lõi 12GHz. Điều đó giống như có 4 đồng hồ với màn hình 7 đoạn trong đó mỗi đồng hồ chỉ hiển thị thời gian chính xác theo giờ. Cho dù họ hiển thị giờ chính xác đến mức nào, bạn không thể sử dụng chúng để đo khoảng thời gian trong một giây.


Câu trả lời hữu ích cho những người ít suy nghĩ kỹ thuật. Ngoài ra, tôi thích sự tương tự :)
aff

3

Tôi không phải là một chuyên gia về chủ đề này, nhưng tôi có bằng Kỹ sư Máy tính. Về lý thuyết (đây là câu trả lời mang tính khái niệm cao), mỗi bộ xử lý 3GHz bốn nhân thể tương đương với một bộ xử lý 12GHz nếu, chẳng hạn, có bốn bộ tính toán cần thiết cho một kết quả cuối cùng. Đó là những gì được gọi là xử lý song song.

Để đơn giản hóa logic, giả sử chúng ta đang nói về bộ xử lý lõi kép. Nếu một tập hợp các phép tính là, hãy nói:

a = b + 1;

c = d + 1;

sau đó, hai phép tính đó có thể được thực thi trên các lõi riêng biệt và bộ xử lý xGHz sẽ tương đương với bộ xử lý 2 * xGHz lõi đơn. Điều này là do hai phép tính, mặc dù được thực hiện ở tốc độ x, sẽ được xử lý cùng một lúc. Trong khi đó, bộ xử lý đơn lõi có thể thực hiện chúng ở tốc độ 2 * x nhưng lần lượt từng bộ. Nếu hai CPU thực thi mã này cùng một lúc, chúng sẽ hoàn thành cùng một lúc. Tuy nhiên, nếu mã là:

a = b + 1;

c = a + 1;

sau đó, bộ xử lý lõi kép sẽ mất gấp đôi thời gian của bộ xử lý lõi đơn vì trong lệnh thứ hai, giá trị của a phụ thuộc vào lệnh thứ nhất và do đó không thể được thực thi song song. Đây là cách một số phần mềm có thể tận dụng các bộ xử lý đa luồng.

Vì vậy, về mặt lý thuyết, bộ xử lý lõi đơn 12 GHz luôn có thể chạy nhanh (hoặc nhanh hơn) so với bộ xử lý lõi tứ 3GHz, nhưng không phải ngược lại.


Lưu ý rằng những tính toán đó sẽ chỉ nhanh hơn nếu nó bị sai lệch, và thậm chí sau đó có một chút chi phí. Nhưng có, trong khi có thể tạo ra một bộ xử lý lõi đơn có thể thực hiện nhiều phép tính, đơn giản là nó không hợp lý do nhiệt và các thứ.
Phoshi

Câu trả lời này là sai lệch vì hai lý do. Đầu tiên, lõi hiện đại làm nhiều việc cùng một lúc. Thứ hai, câu trả lời giả định rằng tốc độ lõi giống như tốc độ thực hiện công việc. Bộ xử lý lõi đơn 12 GHz sẽ không chạy nhanh như bộ xử lý lõi tứ 3GHz nếu bộ xử lý lõi đơn cần nhiều chu kỳ xung nhịp hơn để hoàn thành công việc tương tự. (Mà bộ xử lý 12GHz sẽ cần các đường ống dài hơn nhiều.)
David Schwartz

2

Đây là một câu hỏi phức tạp để trả lời, nhưng câu trả lời ngắn gọn là: Không

Trong các ứng dụng trong thế giới thực, bốn bộ xử lý 3Ghz sẽ không nhanh bằng một bộ xử lý 12Ghz do không hiệu quả. Chúng có thể rất gần, nhưng chúng sẽ KHÔNG bằng một bộ xử lý duy nhất về sức mạnh xử lý.

Lý do cho điều này nằm ở sự thiếu hiệu quả khi xử lý các chương trình có thể chạy trên nhiều bộ xử lý. Giả sử rằng chương trình đang đề cập có thể chạy song song, chúng ta vẫn sẽ gặp vấn đề với các lõi khác nhau cạnh tranh lẫn nhau đối với các tài nguyên khác như RAM hoặc thậm chí các vấn đề đồng bộ hóa bộ đệm và luồng. Ngoài ra, luôn có các phần của chương trình không thể song song và cần tự chạy trên một lõi.

Hãy xem bài viết này: http://en.wikipedia.org/wiki/Amdahl%27s_law


Bạn đúng và sai. Bốn bộ xử lý 3ghz nhiều khả năng sẽ NHANH CHÓNG hơn một bộ xử lý 12ghz duy nhất trong các ứng dụng "thế giới thực". Ngày nay, ngày càng có nhiều chương trình sử dụng đa luồng, liên kết bạn đưa ra đề cập đến một ứng dụng luồng đơn lý thuyết. Một bộ xử lý duy nhất ở 12ghz chỉ có một luồng, do đó, đa luồng mang lại lợi ích cho chương trình "thế giới thực" sẽ bị mất. Ngành công nghiệp sẽ không hướng tới các lõi chậm hơn thay vì các lõi nhanh hơn chỉ vì, lợi ích của công nghệ đa lõi vượt xa lợi ích của công nghệ lõi đơn nhanh.
ubiquibacon

3
@typoknig: Điều đó không hoàn toàn đúng. Bộ xử lý lõi đơn 6GHz sẽ chạy một ứng dụng đa luồng với tốc độ tương đương với bộ xử lý lõi kép 3GHz, giả sử ứng dụng đang tận dụng tối đa mọi luồng (điều mà rất có thể nó không làm nếu đó là "thực" ứng dụng thế giới ", nhưng đó là một lập luận riêng biệt). Chúng tôi không thấy bộ xử lý 12GHz vì quá khó với công nghệ hiện tại, không phải vì nó chậm hơn.
Sasha Chedygov

4
@typoknig: Tôi đã lập trình một số chương trình đa dạng và tin tôi đi, nếu tôi có một bộ xử lý 12Ghz duy nhất, id sử dụng thay thế. Lập trình đơn luồng dễ dàng hơn gấp 10 lần và hiệu quả hơn nhiều so với lập trình luồng. Lý do thực sự khiến ngành công nghiệp chuyển động bộ xử lý đột biến không phải vì chúng nhanh hơn, vì chúng ta không thể làm cho các CPU riêng lẻ chạy nhanh hơn! Điều này đã được vạch ra với công nghệ netburst của Intel trở lại trong p4 ngày. Họ ước tính bộ xử lý 10Ghz, ít nhất là cho đến khi vật lý lượng tử tát vào mặt họ và nói "không noob!"
Được thực hiện vào

2
@typokning: F22 sử dụng một loạt các bộ xử lý powerPC để đạt được 10 tỷ hướng dẫn mỗi giây, rất khác so với 10Ghz! Giống như nói Radion HD5970 của bạn hoạt động ở mức 4600Ghz. Nó có khả năng cho 4,6 TFLOPS nhưng chỉ vì nó rất song song.
Thực hiện

1
@typoknig: Bạn rõ ràng không hiểu sự khác biệt giữa tần số CPU và IPS (hướng dẫn mỗi giây), chúng không phải là một trong cùng một. Vui lòng đọc: en.wikipedia.org/wiki/In
thi_per_second

2

Có vẻ như chúng ta không thể nói rằng 4 lõi @ 3 GHz có thể nói là 12 GHz.

Các ràng buộc khác nhau như bộ nhớ dùng chung, tranh chấp bộ đệm và các tài nguyên khác cũng phổ biến đối với tất cả các lõi, do đó, việc chạy một đoạn mã song song trên các lõi này sẽ không hiệu quả như chạy trên bộ xử lý 12 Ghz (mặc dù rất khó để xây dựng bộ xử lý như vậy ).

Ngoài ra tôi đọc được ở đâu đó rằng nếu chúng ta nhân đôi các bóng bán dẫn được nhúng trên chip (CMP), tốc độ chúng ta sẽ đạt được chỉ là 40%. Điều này cũng cung cấp một gợi ý quan trọng cho chủ đề này.


1

Theo như chu kỳ đồng hồ được thực hiện, có một bộ xử lý đa lõi thực hiện các x * coreschu trình làm việc mỗi giây. Thông thường, tốc độ xung nhịp được liệt kê trên cơ sở mỗi lõi để so sánh dễ dàng hơn (nếu không, bạn có thể dễ dàng so sánh chip lõi kép 4GHz chạy ở tốc độ 2GHz / lõi so với chip lõi tứ 4GHz chạy ở tốc độ 1GHz / lõi?).

Thật không may, vấn đề trở nên phức tạp khi bạn cố gắng so sánh các bộ xử lý khác nhau trong các ứng dụng trong thế giới thực.

Đầu tiên, hầu hết các bộ xử lý đa lõi có một số tài nguyên được chia sẻ giữa các lõi (ví dụ: bộ đệm CPU). Họ phải chia sẻ quyền truy cập vào bộ đệm đó, vì vậy bạn không thể có cả hai lõi lưu trữ hoặc đọc dữ liệu ở tốc độ tối đa. Điều này thường được giảm thiểu trong các CPU nhiều lõi bằng cách có nhiều bộ đệm chia sẻ (ví dụ: hầu hết các chip lõi tứ có 2 bộ đệm, mỗi bộ được chia sẻ bởi một cặp lõi), để phân chia tốt hơn khả năng tắc nghẽn trên tài nguyên được chia sẻ.

Thứ hai, và có lẽ ít được biết đến trong thế giới phi công nghệ, là việc so sánh tốc độ đồng hồ đôi khi có thể giống như so sánh táo và cam. Các CPU khác nhau hoàn thành một lượng công việc khác nhau trong một chu kỳ xung nhịp đơn, do đó, nói rằng bạn có 1GHz so với 1.2GHz nghe có vẻ tuyệt vời, nhưng chip 1GHz thực sự có thể hoàn thành nhiều công việc hơn trong một khoảng thời gian nhất định. Pentium 4 đã lái điểm này về nhà, dẫn đến Huyền thoại Megahertz (mà tôi không biết có một cái tên được đặt ra cho đến khi viết bài này).


Tốc độ đồng hồ không được liệt kê trên "cơ sở mỗi lõi". Tốc độ không bao giờ là "trên" bất cứ điều gì. Nếu một chiếc xe hơi đang diễn ra 50 dặm một giờ, tốc độ là 50 dặm một giờ. Nếu hai chiếc xe đang đi 50 dặm một giờ, tốc độ vẫn là 50 dặm một giờ. Ý tưởng về "tốc độ trên mỗi chiếc xe" là vô nghĩa và không mạch lạc.
David Schwartz

1

Hai chiếc xe từng đi 50 dặm một giờ không "thêm lên" đến 100 dặm một giờ. Nó thật sự đơn giản. Tốc độ đồng hồ của bộ xử lý không phải là thước đo tốc độ thực hiện công việc, nó là thước đo tốc độ của đồng hồ.

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.