2009-03-10 25 views
5

Có vẻ như NUMA đang hứa hẹn cho lập trình song song, và nếu tôi không sai, CPU mới nhất hiện tại đã tích hợp sẵn hỗ trợ cho nó, như i7.Bạn có dự đoán CLR sẽ sớm thích ứng với NUMA không?

Bạn có dự đoán CLR sẽ sớm thích ứng với NUMA không?

EDIT: Bằng cách này, tôi có nghĩa là có hỗ trợ cho nó và tận dụng lợi thế của nó.

Trả lời

2

NUMA là kiến ​​trúc phần cứng, không nhất thiết phải có thứ gì đó cần được chấp nhận trong CLR trực tiếp. Để biết chi tiết, hãy xem các thông tin NUMA FAQ.

Điều đó đang được nói, có những lợi thế để làm cho phần mềm nhận thức được kiến ​​trúc của nó. Những người trong nhóm CLR dường như nhận thức được các vấn đề với sự kết hợp bộ nhớ cache, vv, vì vậy tôi sẽ đặt cược rằng có một số tối ưu hóa cho điều này. Ngoài ra, thiết kế của bộ lập lịch trong thư viện song song nhiệm vụ trong C# 4 dường như hứa hẹn cho việc tận dụng các lợi thế tốt hơn của các kiến ​​trúc NUMA.

+0

Bạn có bất kỳ tham chiếu nào cho "dường như biết về các vấn đề về kết hợp bộ nhớ cache" và "thiết kế lịch biểu ... hứa hẹn ..." không? Tôi rất thích đọc thêm. –

+0

FYI: "Cache coherency" không phải là một vấn đề về phần mềm. Điều đó đã được giải quyết bởi Intel và AMD, bởi vì NUMA chính thống là tất cả ccNUMAs (bộ nhớ cache kết hợp NUMA). Phần mềm nào phải giải quyết tuy nhiên là nơi để cấp phát bộ nhớ, mà thread/process, tùy thuộc vào lõi/cpu (s) nó chạy trên (affinity). –

1

Theo nghĩa nào đó, NUMA là trực giao với mô hình bộ nhớ của CLR. Nói cách khác, phần cứng/hệ điều hành có phương thức truy cập của nó, CLR có các yêu cầu về mô hình bộ nhớ của nó, và nó phụ thuộc vào trình thực hiện CLR để làm cho nó hoạt động tốt đẹp với nhau. Trong thực tế, điều này là khó khăn, và there are flaws in the current implementation. Nhưng khi CLR đã chạy trên phần cứng hỗ trợ NUMA, tôi không thực sự chắc chắn ý bạn là gì bằng cách "thích ứng với NUMA sớm.?

+1

Theo như tôi biết, CLR sử dụng cùng một chiến lược cấp phát bộ nhớ cảm ứng đầu tiên mà hệ điều hành cơ bản sử dụng. Chủ đề đầu tiên để chạm vào một trang ảo được nó ánh xạ (bởi hệ điều hành mà tôi nghĩ, không phải là CLR) vào nút NUMA tương ứng với CPU mà chuỗi này sẽ xảy ra. Rất có thể là một luồng trên một CPU khác sẽ sử dụng cùng một bộ nhớ đó (hiện giờ là trên một nút NUMA xấu) sau này trong suốt thời gian tồn tại của ứng dụng. –

1

Tất cả câu trả lời ở đây là chính xác trong việc đánh dấu NUMA là kiến ​​trúc phần cứng. sẽ là this article by Joe Duffy trên đồng thời và CLR

1

Với NUMA về cơ bản bạn có trên mỗi bộ điều khiển bộ nhớ của bộ vi xử lý.Bạn có điều đó với Intel QuickPath và AMD HyperTransport.Điều này, theo như tôi biết, hiện tại không có bo mạch chủ nào cả đối với i7, cũng như đối với Phenom, điều đó sẽ hỗ trợ nhiều hơn một CPU

Dù sao, mức này rất thấp, không liên quan gì đến CLR. để tận dụng nó.

+1

Điều đó không đúng. Trình quản lý bộ nhớ CLR (hoặc trong trường hợp này là trình quản lý bộ nhớ CLR) có thể là NUMA hay không. Hệ điều hành này có lẽ sẽ không bao giờ có đủ thông tin để đưa ra quyết định tốt hơn so với chiến lược hiện tại đầu tiên mà Windows và Linux sử dụng. Xem http://stackoverflow.com/questions/9439402/array-memory-management –

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