7

Ngôn ngữ lập trình hiện đại cung cấp cơ chế song song và đồng thời là công dân hạng nhất cho người dùng của họ. Tôi hiểu cách các thuật toán song song được lập trình và cũng có thể tưởng tượng hai luồng trên CPU đa lõi có thể chạy song song như thế nào.Làm thế nào là song song trên một chủ đề/lõi đơn có thể?

Tuy nhiên, hầu hết các nền tảng này cũng hỗ trợ chạy các quy trình song song trên một chuỗi duy nhất.

  • Các quy trình này có thực sự chạy song song không?
  • Làm thế nào, ở cấp độ lắp ráp có thể thực hiện hai thường trình khác nhau cùng một lúc trên một chuỗi?

Trả lời

6

TLTR; : song song (theo nghĩa là đúng đồng thời thực hiện) trên một lõi CPU không được tăng tốc, không thể thực hiện được.


Phần cứng (< - EDIT) Paralellism có thể đạt được ở nhiều cấp độ. Ra lệnh bằng cách giảm granularity:

  1. đa-host
  2. đa xử lý
  3. đa lõi
  4. đa đề ("Hyper-Threading", tức là "HT") (EDIT: Tôi voluntarity bỏ qua trường hợp của compuations vectorized nơi nhiều ALU có thể driven bởi cùng một lõi)

câu hỏi của bạn liên quan đến chạy hai luồng phần mềm trong trường hợp 3. (trong trường hợp HT không khả dụng/vô hiệu hóa) hoặc 4.

  • Trong cả hai trường hợp, quy trình thực sự KHÔNG chạy song song. Người dùng có ấn tượng về tính đồng thời do các công tắc ngữ cảnh cực kỳ nhanh được thực hiện ở cấp CPU, có xu hướng phân bổ, theo tuần tự, thời gian lõi vật lý (resp. Thread) đến một hoặc một chuỗi phần mềm khác

  • Trong cả hai trường hợp, những thói quen chỉ đơn giản là không được thực hiện cùng một lúc, nhưng tuần tự

các ưu tiên tương đối phân bổ cho mỗi người 2 thói quen có thể được đặt trên hệ điều hành khác nhau bởi những "ưu tiên" bạn cung cấp cho quá trình này, mà sẽ bị xử lý theo lịch trình của hệ điều hành, do đó sẽ phân bổ thời gian CPU.

HTH.

Để thực hiện các kiểm tra để hiểu rõ hơn về chủ đề này, bạn có thể muốn google "ái lực cpu". Điều này sẽ cho phép bạn chạy một quy trình hai luồng trên một lõi đơn vật lý của một CPU đa nhân và thời gian được thực hiện bởi mỗi chủ đề, trong khi thay đổi mức độ ưu tiên của chúng, v ...

+0

(4) trộn lên hai điều khác nhau. HT là hỗ trợ phần cứng để cho phép chuyển đổi nhanh giữa hai luồng (vì vậy nếu một luồng đang chờ dữ liệu từ bộ nhớ, thì luồng kia có thể tiếp quản). cũng có (5) luồng "đơn giản" ở cấp phần mềm. cả 4 và 5 không phải là luồng "đúng" nơi các hoạt động diễn ra song song nhưng (4) được gần hơn đáng kể, trong đó một số hoạt động (hoặc một phần hoạt động) có thể xảy ra song song với siêu luồng khác. ví dụ, việc tìm nạp bộ nhớ cho một siêu luồng có thể xảy ra trong khi luồng khác chạy. –

+0

@adrew cooke: cảm ơn bạn đã tinh chỉnh danh sách. Tôi cố ý không bao gồm (5) trong danh sách chính xác vì nó là "phần mềm" song song, vì vậy bạn là đúng (và tôi đang sửa đổi bài viết ban đầu): Tôi chỉ liệt kê các loại phần cứng "song song". –

+0

-1: Tất cả các CPU hiện đại cung cấp tính song song ở cấp độ lệnh. Xem câu trả lời của tôi. –

1

Có, có song song trong mỗi chủ đề và bạn nhận được nó miễn phí, không có vấn đề mà ngôn ngữ lập trình bạn sử dụng (mặc dù số lượng song song có thể khác nhau).

Nó được gọi là instruction-level parallelism.Các chi tiết khá phức tạp và khác nhau giữa các kiến ​​trúc vi xử lý khác nhau.

Computer Architecture: A Quantitative Approach là một cuốn sách tuyệt vời bao gồm một chương về song song cấp giảng dạy và các ví dụ của cuốn sách dạy cách suy nghĩ hợp lý về kỹ thuật.

Kiểm tra các liên kết sau để biết thêm thông tin:

http://en.wikipedia.org/wiki/Superscalar

http://en.wikipedia.org/wiki/Instruction_pipelining

http://en.wikipedia.org/wiki/Out-of-order_execution

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