Bagaimana CPU multi-core menerapkan koordinasi asinkron?

8

Saya berasal dari latar belakang ilmu komputer dan ingin mempelajari proses kalkulus untuk digunakan dalam desain sirkuit asinkron.

Jadi, saya melihat-lihat praktik saat ini di sirkuit asinkron. Ada banyak artikel yang mengatakan ketidakmampuan untuk meningkatkan kecepatan clock mengarah ke arsitektur CPU multi-core . Namun, tidak ada yang benar-benar mengatakan bagaimana koordinasi asinkron antara inti tercapai.

Saya ingin Anda mengkonfirmasi / memperbaiki asumsi berikut tentang bagaimana CPU multi-core saat ini menangani koordinasi asinkron:

  1. Masing-masing inti memiliki sinyal clock yang terpisah, yang tidak perlu berada dalam fase satu sama lain. Kalau tidak, masalah distribusi sinyal clock tidak akan benar-benar diselesaikan, bukan?
  2. Core hanya berkoordinasi pada level pemrograman. Artinya, melakukan test-and-set pada sebagian memori (RAM atau register). Dan bukan sesuatu tingkat rendah seperti protokol tangan-gemetar menggunakan sirkuit pertemuan .
Apiwat Chantawibul
sumber
1
CPU single-core besar memiliki beberapa jam, digunakan untuk pengurangan daya. Beberapa jam terjaga keamanannya, beberapa secara dinamis diperlambat. Tambahkan inti lain dan tentu saja memiliki beberapa jam. Distribusi jam yang lebih mudah adalah efek samping, tetapi bukan alasan ada beberapa jam.
2
Silahkan lihat pada tulisan ini tentang bagaimana untuk menyeberang jam domain antara frekuensi yang berbeda: w2.cadence.com/whitepapers/cdc_wp.pdf
pjc50
1
(Tentang distribusi sinyal clock: pohon penyangga di mana semua node daun memiliki waktu propagasi yang sama dari sumbernya adalah solusinya. Anda dapat membangun algoritmik ini. Ini bukan sepele tetapi berfungsi)
pjc50
1
Kerugian dari pohon penyangga banyak: ia dapat mengkonsumsi sebagian besar daya, dan 10-30% dari area yang tersedia. Namun, seperti yang ditemukan oleh startup kami, masalah utama dengan desain asinkron adalah perlu mengubah seluruh rantai perangkat lunak Anda untuk menggunakannya secara efektif. Perusahaan IC ternyata konservatif, karena biaya produksi dan risiko kegagalan.
pjc50
1
@ pjc50 ISTR bahwa beberapa tata letak jaringan, prosesor berorientasi pesan-lewat (mungkin milik Tilera?) memiliki jam "aliran" kiri-ke-kanan dan bawah-ke-atas, karena hanya tetangga terdekat yang perlu berkomunikasi secara langsung (semacam berbagai Global Synchronous Asynchronous Asinkron).
Paul A. Clayton

Jawaban:

1

Anda mencampur dua ide independen (ortogonal) dalam teori sirkuit digital: sirkuit asinkron dan prosesor multi-inti.

Sirkuit asinkron: sirkuit yang memiliki lebih dari satu jam, dan jam-jamnya asinkron (yaitu memiliki hubungan fase yang tidak konstan dan tidak dapat diprediksi).

Beberapa sirkuit mungkin menggunakan dua jam (misalnya), tetapi yang satu hanya pembagian dengan 2 jam lainnya. Sirkuit ini tidak sinkron karena ada hubungan fase yang diketahui antara dua jam, meskipun frekuensi jam berbeda.

Anda mungkin memiliki CPU inti tunggal yang memiliki beberapa jam asinkron, dan CPU multi-inti dengan semua inti berjalan pada jam yang sama (yang terakhir hanya merupakan CPU imajiner - semua CPU multi-core nyata memiliki banyak jam yang terdiri dari beberapa set jam asinkron).

Sirkuit asinkron adalah topik utama dalam desain digital. Penjelasan di atas adalah dasar.

CPU multi-core: beberapa mikroprosesor (inti) yang terhubung secara paralel yang menggunakan perangkat keras dan perangkat lunak canggih untuk mencapai kinerja tinggi.

Praktik yang biasa adalah membuat core sebebas mungkin dalam hal jam / kekuasaan / eksekusi / dll. Ini memungkinkan penyesuaian aktivitas CPU yang dinamis (saat dijalankan) (yaitu daya yang dikonsumsi) dengan kebutuhan aktual sistem.

Kesan saya adalah apa yang Anda cari adalah penjelasan tentang CPU multi-core , bukan sirkuit asinkron.

Topik ini jauh, jauh lebih besar daripada apa pun yang bisa dijawab oleh seseorang.

Jawaban atas pertanyaan Anda:

  1. Jam yang digunakan oleh inti yang berbeda (setahu saya) memiliki sumber yang sama (bisa lebih dari satu: kristal, VCO, ...). Setiap inti (biasanya) memiliki beberapa set jam yang saling tidak sinkron. Setiap inti memiliki logika gating jam dan pelambatan yang memungkinkan untuk mematikan atau memperlambat jam, secara terpisah untuk setiap inti. Sekali lagi, jika Anda hanya tertarik pada aspek algoritmik paralelisme inti - lupakan jam (untuk saat ini).
  2. Anda baru saja menunjukkan aspek utama paralelisme inti - bagaimana Anda menjalankan banyak inti secara paralel secara efisien . Topik ini sangat besar, dan berisi solusi HW dan SW. Dari perspektif HW, core memodifikasi memori umum dan kontrol pertukaran dan sinyal status dengan urutan logika dan di antara mereka. Gambaran ini menyulitkan karena adanya cache - saya sarankan Anda mulai dari membaca cache, lalu koherensi cache, dan hanya kemudian pada uang tunai dalam sistem multi-core.

Semoga ini membantu.

Vasiliy
sumber
Fakta bahwa CPU harus berjalan pada kecepatan yang berbeda tidak menyiratkan bahwa mereka harus tidak sinkron. Memiliki jendela di sekitar setiap jam ketika sinyal dijamin tidak berubah sangat berguna. Sekalipun dua modul memiliki laju clock yang tidak saling kelipatan satu sama lain, mungkin berguna untuk keduanya dihasilkan oleh perangkat yang memastikan mereka tidak pernah berpindah terlalu dekat satu sama lain.
supercat