2012-10-12 41 views
6

Tôi không chắc chắn điều đó. Tôi có thể viết một bộ nhớ lớn (ví dụ 10 MB), trên bốn lõi để tăng tốc với điều này?Bộ nhớ có thể được song song trên 4 lõi không?

Tương tự như vậy có thể thực hiện song song ram-chip hay không và cũng tốn bao nhiêu thời gian để kích hoạt các luồng khác - có hơn một phần nghìn giây hoặc nhỏ hơn không?

+5

hoạt động như vậy có thể sẽ chỉ bị chậm hơn nếu bạn song song nó - bạn có nhiều lõi/cpus chiến đấu để truy cập vào bus bộ nhớ. –

+0

Có thể sử dụng hướng dẫn cụ thể để di chuyển nhiều byte hơn một lần sẽ giúp bạn. sử dụng song song sẽ có lợi thế chỉ khi dữ liệu được phân phối trong phần bộ nhớ khác nhau. – wbao

+4

Trường hợp duy nhất trong đó một 'memset' song song có thể nhanh hơn là với các khối bộ nhớ rất lớn trên kiến ​​trúc NUMA trong đó mỗi lõi đang làm việc trên bộ nhớ gắn với bộ xử lý của nó. –

Trả lời

2

Bạn đang chỉ ra một câu hỏi đúng, đồng thời rất khó đưa ra câu trả lời đơn giản cho câu hỏi đó. Có một số khía cạnh liên quan.

  1. Overhead bắt đầu chủ đề mới (hoặc chọn chúng từ một số bộ nhớ cache);
  2. Căng thẳng trên bus bộ nhớ.
  3. Các khía cạnh trên khác nhau và có chi phí rất khác nhau cho các nền tảng khác nhau.

Máy tính lớn hơn có nhiều bus bộ nhớ. Những người nhỏ hơn chỉ có một. Trên một hệ thống xe buýt bộ nhớ, điều này không có ý nghĩa gì cả. Nếu hệ thống của bạn có nhiều kênh nhớ (kênh), thì mảng dữ liệu của bạn có thể có sự phân chia tùy ý giữa các ngân hàng bộ nhớ. Nếu nó xảy ra thì toàn bộ mảng nằm trong cùng một ngân hàng bộ nhớ, sự phân chia sẽ là vô ích. Tìm ra cách bố trí của mảng của bạn là một chi phí một lần nữa. Nói cách khác trước khi tách hoạt động giữa các lõi, cần phải tìm hiểu xem điều này có đáng làm hay không.

Câu trả lời đơn giản là những khó khăn để dự đoán chi phí đầu tư nhiều khả năng sẽ tiêu thụ lợi ích và làm cho kết quả tổng thể tồi tệ hơn.

Đồng thời cho một khu vực bộ nhớ thực sự lớn trên một số kiến ​​trúc có ý nghĩa.

+0

Có đáng để xác định khi bắt đầu chương trình nếu nó có giá trị parrallizing * memset * và quyết định tại thời gian chạy? –

+0

Điều này có thể xảy ra trong khi bắt đầu HĐH. CPU giống nhau đối với tất cả các ứng dụng sẽ được khởi động. Mặt khác, sự phân chia giữa các ngân hàng bộ nhớ sẽ là tất cả các lần khác nhau và không dễ dàng để đánh giá. –

+1

Trên CPU hiện đại, một lõi CPU đơn có thể dễ dàng bão hòa tất cả các bus bộ nhớ khi viết các số 0. Vì vậy, ngay cả sau đó không có điểm song song. – MSalters

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