2009-07-04 44 views
7

Tôi nhận ra đây là câu hỏi phần cứng nhiều hơn, nhưng điều này cũng rất phù hợp với phần mềm, đặc biệt khi lập trình cho các môi trường đa lõi/CPU đa luồng.Hiệu quả hơn? Càng nhiều lõi hoặc nhiều CPU hơn

Điều nào tốt hơn và tại sao? Cho dù đó là hiệu quả, tốc độ, năng suất, khả năng sử dụng, v.v.

1.) Máy tính/máy chủ có 4 CPU lõi tứ?

hoặc

2.) Một máy tính/máy chủ với 16 CPU lõi đơn?

Hãy giả sử tất cả các yếu tố khác (tốc độ, bộ nhớ cache, tốc độ bus, băng thông, v.v.) đều bằng nhau.

Sửa:

Tôi quan tâm đến các khía cạnh hiệu suất nói chung. Nếu nó đặc biệt tốt hơn ở một khía cạnh và khủng khiếp (hoặc không thích hợp) ở một khía cạnh khác, thì tôi cũng muốn biết điều đó.

Và nếu tôi phải chọn, tôi muốn được quan tâm nhiều nhất, tốt hơn là liên quan đến các ứng dụng I/O-bound và các ứng dụng tính toán.

+1

Tốt hơn cho những gì? Các ứng dụng I/O-bound? Ứng dụng tính toán? Máy chủ cơ sở dữ liệu? Máy chủ web? Phát trực tuyến video? –

+0

Hiệu suất chủ yếu. Nhưng tôi sẽ thích một câu trả lời toàn diện hơn, vì nếu nó đặc biệt tốt hơn ở một và khủng khiếp tại anohter, thì tôi cũng muốn biết điều đó. – Sev

+0

Và nếu tôi phải chọn, tôi muốn được quan tâm nhiều nhất, đó là tốt hơn liên quan đến các ứng dụng I/O-ràng buộc, và các ứng dụng tính toán ràng buộc. – Sev

Trả lời

12

Đó không phải là câu hỏi dễ trả lời. Kiến trúc máy tính là không đáng ngạc nhiên thay vì phức tạp. Dưới đây là một số nguyên tắc nhưng thậm chí đây là những cách đơn giản. Rất nhiều điều này sẽ đi vào ứng dụng của bạn và những hạn chế bạn đang làm việc trong (cả kinh doanh và kỹ thuật).

CPU có một số (2-3 thường) levels of caching on the CPU. Một số CPU hiện đại cũng có bộ điều khiển bộ nhớ trên khuôn. Điều đó có thể cải thiện đáng kể tốc độ trao đổi bộ nhớ giữa các lõi. Bộ nhớ I/O giữa các CPU sẽ phải đi trên một xe buýt bên ngoài, có xu hướng chậm hơn.

Chip AMD/ATI sử dụng HyperTransport, là giao thức điểm-điểm.

Phức tạp tất cả điều này tuy nhiên là kiến ​​trúc xe buýt. Hệ thống Core 2 Duo/Quad của Intel sử dụng shared bus. Hãy nghĩ về điều này như Ethernet hoặc internet cáp, nơi chỉ có quá nhiều băng thông để đi vòng và mọi người tham gia mới chỉ chiếm một phần khác từ toàn bộ. Core i7 và mới hơn Xeons sử dụng QuickPath, khá giống với HyperTransport.

Nhiều lõi hơn sẽ chiếm ít không gian hơn, sử dụng ít dung lượng hơn và ít năng lượng hơn và chi phí ít hơn (trừ khi bạn đang sử dụng CPU thực sự thấp) cả trong điều kiện trên mỗi lõi và chi phí của phần cứng khác (ví dụ: bo mạch chủ).

Nói chung một CPU sẽ rẻ nhất (cả về phần cứng và phần mềm). Phần cứng hàng hóa có thể được sử dụng cho việc này. Một khi bạn đi đến ổ cắm thứ hai, bạn có xu hướng phải sử dụng các chipset khác nhau, bo mạch chủ đắt tiền hơn và RAM thường đắt hơn (ví dụ như RAM RAM đầy đủ của ECC), do đó bạn sẽ phải chịu một khoản chi phí lớn từ một CPU đến hai. Đó là một lý do rất nhiều trang web lớn (bao gồm Flickr, Google và các trang khác) sử dụng hàng ngàn của các máy chủ hàng hóa (mặc dù các máy chủ của Google có phần được tùy chỉnh để bao gồm những thứ như pin 9V nhưng nguyên tắc là như nhau).

Chỉnh sửa của bạn không thực sự thay đổi nhiều. "Hiệu suất" là một khái niệm chủ quan cao. Hiệu suất ở những gì?Hãy nhớ rằng nếu ứng dụng của bạn không đủ đa luồng (hoặc đa xử lý) để tận dụng các lõi phụ thì bạn thực sự có thể giảm hiệu suất bằng cách thêm nhiều lõi hơn.

Ứng dụng bị ràng buộc I/O có thể sẽ không phù hợp với ứng dụng khác. Họ, sau khi tất cả, bị ràng buộc bởi I/O không CPU.

Đối với các ứng dụng dựa trên tính toán, nó phụ thuộc vào bản chất của tính toán. Nếu bạn đang thực hiện nhiều điểm nổi, bạn có thể hưởng lợi nhiều hơn bằng cách sử dụng GPU để giảm tải các phép tính (ví dụ: sử dụng Nvidia CUDA). Bạn có thể nhận được lợi ích hiệu suất cao từ to. Hãy xem GPU client for [email protected] để biết ví dụ về điều này.

Tóm lại, câu hỏi của bạn không tự cho vay một câu trả lời cụ thể vì chủ đề phức tạp và không có đủ thông tin. Kiến trúc kỹ thuật là cái gì đó phải được thiết kế cho ứng dụng cụ thể.

+0

Nếu không xem xét chi phí và không gian, bạn có thể xây dựng trên đó là tốt hơn liên quan đến các khía cạnh khác nhau? Hãy xem xét các chỉnh sửa trên bài đăng của tôi nếu bạn có thể vui lòng. – Sev

+1

Nếu bạn có nhiệm vụ thiếu băng thông bộ nhớ, hệ thống đa ổ cắm có thể cung cấp nhiều băng thông hơn cho mỗi tác vụ nếu hệ điều hành có NUMA nhận biết. Tuy nhiên, nếu các tác vụ được đồng bộ hóa nặng (tức là chia sẻ một lượng lớn dữ liệu được sửa đổi thường xuyên) thì độ trễ bộ nhớ cao hơn của hệ thống đa ổ cắm có thể bị tổn thương. – user57368

+3

Sev, tôi nghĩ rằng bạn có thể không hiểu rằng câu hỏi của bạn câu trả lời đơn giản là "Nó phụ thuộc" vì có rất nhiều yếu tố để xem xét và cletus làm một công việc tốt lúc lấy một đâm ban đầu vào nó. –

3

Vâng, vấn đề là tất cả các yếu tố khác thực sự không thể bằng nhau.

Vấn đề chính với đa CPU là độ trễ và băng thông khi hai socket CPU phải liên lạc. Và điều này phải xảy ra liên tục để đảm bảo bộ nhớ cache cục bộ của họ không đồng bộ. Điều này gây ra độ trễ và đôi khi có thể là nút cổ chai của mã của bạn. (Không phải lúc nào cũng vậy.)

1

Nó phụ thuộc vào kiến ​​trúc ở một mức độ nào đó; NHƯNG CPU lõi tứ là khá giống nhau (hoặc tốt hơn) so với 4 CPU riêng biệt về mặt vật lý do giao tiếp giảm (nghĩa là không phải đi chết và không di chuyển rất xa, đó là yếu tố) và tài nguyên được chia sẻ.

+0

Vì vậy, bạn đang nói nhiều lõi hơn là chắc chắn tốt hơn so với cpu đơn lõi? Tôi muốn có một số điểm chuẩn có sẵn để chứng minh điều này. – Sev

+0

Tuy nhiên, một bộ xử lý đơn lẻ có thể có bộ đệm chia sẻ giữa một số lõi. Nếu các lõi đang làm việc trên bộ phận khác nhau của bộ nhớ, bộ xử lý sẽ dành phần lớn thời gian làm mất hiệu lực các dòng bộ nhớ cache và tìm nạp dữ liệu từ bộ nhớ chính thông qua bus. – Ben

2

Nhiều lõi trên CPU ít hơn chắc chắn nhanh hơn khi SPWorley viết. Câu trả lời của anh ấy đã gần ba tuổi rồi nhưng xu hướng ở đó và tôi tin rằng câu trả lời của anh ấy cần làm rõ một số. Đầu tiên một số lịch sử.

Vào đầu những năm 80, 80286 trở thành bộ vi xử lý đầu tiên trong đó bộ nhớ ảo khả thi. Không phải là nó đã không được thử trước đây, nhưng intel tích hợp việc quản lý bộ nhớ ảo lên chip (on-die) thay vì có một giải pháp off-die. Điều này dẫn đến giải pháp quản lý bộ nhớ của họ nhanh hơn nhiều so với đối thủ cạnh tranh của họ vì tất cả quản lý bộ nhớ (đặc biệt là bản dịch của địa chỉ ảo đến địa chỉ vật lý) được thiết kế và một phần của quá trình xử lý chung.

Hãy nhớ những bộ vi xử lý P2 & P3 lồi lõm lớn từ intel và đầu athlon & durons từ AMD được đặt ở một bên và chứa trong một gói nhựa lớn? Lý do cho điều này là để có thể phù hợp với một chip bộ nhớ đệm bên cạnh chip xử lý kể từ khi các quá trình chế tạo của thời gian làm cho nó không khả thi để phù hợp với bộ nhớ cache vào bộ xử lý chết chính nó. Voilà một giải pháp off-die, on-processor. Những chip bộ nhớ cache này, do giới hạn thời gian, chạy ở một phần nhỏ (50% hoặc hơn) của tần số xung nhịp CPU. Ngay sau khi các quy trình sản xuất bắt kịp, bộ nhớ cache đã được di chuyển khi chết và bắt đầu chạy ở tần số xung nhịp bên trong.

Một vài năm trước, AMD đã chuyển bộ điều khiển bộ nhớ RAM từ cầu bắc (off-die) và vào bộ xử lý (on-die). Tại sao? Bởi vì nó làm cho hoạt động bộ nhớ hiệu quả hơn (nhanh hơn) bằng cách loại bỏ một nửa dây địa chỉ bên ngoài và loại bỏ đi qua Northbridge (CPU-wiring-Northbridge-wiring-RAM trở thành CPU-wiring-RAM). Sự thay đổi này cũng làm cho nó có thể có một số bộ điều khiển bộ nhớ độc lập với bộ RAM của họ hoạt động đồng thời trên cùng một khuôn mà làm tăng băng thông bộ nhớ của bộ vi xử lý.

Để quay lại làm rõ, chúng tôi thấy xu hướng dài hạn hướng tới việc di chuyển chức năng quan trọng về hiệu suất từ ​​bo mạch chủ và lên bộ xử lý chết.Ngoài những người được đề cập, chúng tôi đã thấy sự tích hợp của nhiều lõi vào cùng một khuôn, bộ nhớ cache L2/chết L1 chết/chết đã trở thành L3/L0 và L1 cache đang chết trên L1, Cache L2 và L3. Các bộ đệm đã trở nên lớn hơn và lớn hơn đến mức chúng chiếm nhiều không gian hơn các lõi.

Vì vậy, để tổng hợp: bất cứ lúc nào bạn cần phải tắt những thứ chết sẽ làm chậm đáng kể. Câu trả lời: đảm bảo duy trì trạng thái chết càng nhiều càng tốt và hợp lý hóa thiết kế của bất kỳ thứ gì cần phải tắt.

Các vấn đề liên quan