Pada prinsip apakah pemprosesan data selari berasaskan? Jenis-jenis paralelisme. Isu umum untuk menyelesaikan "masalah besar"

"Paralelisme sebagai satu cara pemprosesan selari data"

Kotovsk2010

pengenalan

Perkembangan pesat sains dan penembusan pemikiran manusia ke dalam bidang yang sentiasa baru, bersama-sama dengan penyelesaian masalah yang dikemukakan sebelum ini, sentiasa menimbulkan aliran soalan dan menimbulkan tugas baru, biasanya lebih kompleks. Pada masa komputer pertama, nampaknya meningkatkan kelajuan mereka sebanyak 100 kali akan menyelesaikan kebanyakan masalah, tetapi prestasi gigaflop superkomputer moden hari ini jelas tidak mencukupi untuk ramai saintis. Elektrik dan hidrodinamik, penerokaan seismik dan ramalan cuaca, pemodelan sebatian kimia, penyelidikan realiti maya- tidak jauh senarai penuh bidang sains yang penyelidiknya merebut setiap peluang untuk mempercepatkan program mereka.

Arah yang paling menjanjikan dan dinamik untuk meningkatkan kelajuan menyelesaikan masalah terpakai ialah pengenalan meluas idea selari ke dalam operasi sistem pengkomputeran. Sehingga kini, beratus-ratus telah direka dan diuji pelbagai komputer, menggunakan satu atau satu lagi jenis pemprosesan data selari dalam seni binanya. Dalam kesusasteraan saintifik dan dokumentasi teknikal anda boleh menemui lebih daripada sedozen nama yang berbeza yang mencirikan hanya prinsip umum fungsi mesin selari: saluran paip vektor, selari secara besar-besaran, komputer dengan kata perintah yang luas, tatasusunan sistolik, hiperkubus, pemproses khas dan berbilang pemproses, hierarki dan komputer kluster, aliran data, komputer matriks dan lain-lain lagi. Jika, untuk melengkapkan huraian, kami menambah data tentang sedemikian parameter penting, seperti, sebagai contoh, organisasi memori, topologi komunikasi antara pemproses, penyegerakan operasi peranti individu, atau kaedah melaksanakan operasi aritmetik, kemudian nombor pelbagai seni bina akan menjadi tidak kelihatan sama sekali.

Percubaan untuk mensistematisasikan keseluruhan set seni bina bermula selepas M. Flynn menerbitkan versi pertama klasifikasi sistem pengkomputeran pada lewat 60-an dan berterusan hingga ke hari ini. Pengelasan adalah sangat penting untuk pemahaman yang lebih baik tentang bidang subjek yang dikaji, tetapi mencari pengelasan yang berjaya boleh membawa beberapa akibat yang ketara.

Persoalan utama klasifikasi - apa yang menjadi asasnya - boleh diselesaikan secara berbeza, bergantung kepada siapa klasifikasi ini dicipta dan masalah apa yang bertujuan untuk menyelesaikannya. Oleh itu, pembahagian komputer yang kerap digunakan kepada komputer peribadi, stesen kerja, komputer mini, komputer kerangka utama, mini-super-komputer dan super-komputer, mungkin membolehkan kita menganggarkan secara kasar kos sesebuah komputer. Walau bagaimanapun, ia tidak membawa pengguna lebih dekat untuk memahami apa yang diperlukan daripadanya untuk menulis program yang beroperasi pada had prestasi komputer selari, i.e. untuk apa dia memutuskan untuk menggunakannya.

Klasifikasi harus membantu untuk memahami apa itu setiap seni bina, bagaimana ia saling berkaitan, dan perkara yang perlu diambil kira untuk benar-benar menulis. program yang berkesan atau kelas seni bina yang harus disasarkan untuk menyelesaikan kelas masalah yang diperlukan. Pada masa yang sama, klasifikasi yang berjaya boleh dicadangkan cara yang mungkin menambah baik komputer dan dalam pengertian ini ia sepatutnya cukup bermakna. Sukar untuk mengharapkan untuk mencari "bintik buta" yang tidak remeh, contohnya, dalam klasifikasi mengikut kos, tetapi memikirkan tentang taksonomi yang mungkin dari segi kesederhanaan dan kebolehkilangan pengaturcaraan boleh menjadi sangat berguna dalam menentukan arah untuk mencari yang baru. seni bina.

1. Sistem pengkomputeran selari

Sistem pengkomputeran selari adalah komputer fizikal, serta sistem perisian, melaksanakan dalam satu cara atau pemprosesan data selari yang lain pada banyak nod pengkomputeran.

Idea pengkomputeran selari adalah berdasarkan idea bahawa kebanyakan masalah boleh dibahagikan kepada satu set masalah yang lebih kecil yang boleh diselesaikan secara serentak. Biasanya, pengkomputeran selari memerlukan penyelarasan. Pengkomputeran selari datang dalam beberapa bentuk: keselarian tahap bit, keselarian tahap arahan, keselarian data, dan keselarian tugas. Pengkomputeran selari telah digunakan selama bertahun-tahun terutamanya dalam pengkomputeran prestasi tinggi, tetapi dalam Kebelakangan ini minat telah meningkat kepada mereka kerana wujudnya sekatan fizikal terhadap pertumbuhan kekerapan jam pemproses. Pengkomputeran selari telah menjadi paradigma yang dominan dalam seni bina komputer, terutamanya dalam bentuk pemproses berbilang teras.

Menulis atur cara untuk sistem selari adalah lebih sukar daripada program berurutan, kerana persaingan untuk sumber memperkenalkan kelas baru potensi ralat dalam perisian(pepijat), antaranya keadaan perlumbaan adalah yang paling biasa. Komunikasi dan penyegerakan antara proses menimbulkan halangan besar untuk mendapatkan prestasi tinggi sistem selari. Dalam beberapa tahun kebelakangan ini, isu penggunaan kuasa komputer selari juga telah mula dipertimbangkan. Sifat peningkatan kelajuan program akibat penyejajaran dijelaskan oleh undang-undang Amdahl.

Jika pengiraan tidak melibatkan tindakan kitaran (berulang), maka N modul pengkomputeran tidak akan melakukan kerja N kali lebih pantas daripada satu modul pengkomputeran tunggal.

Sebagai contoh, untuk mengisih tatasusunan dengan cepat pada mesin dwi-pemproses, anda boleh membahagi tatasusunan kepada dua dan mengisih setiap separuh pada pemproses yang berasingan. Mengisih setiap separuh mungkin mengambil masa masa yang berbeza, jadi penyegerakan diperlukan.

2. Jenis-jenis paralelisme

2.1 Keselarian tahap bit

Bentuk paralelisme ini adalah berdasarkan peningkatan saiz kata mesin. Meningkatkan saiz perkataan mesin mengurangkan bilangan operasi diperlukan oleh pemproses untuk melakukan tindakan pada pembolehubah yang saiznya melebihi saiz perkataan mesin. Sebagai contoh: pada pemproses 8-bit anda perlu menambah dua integer 16-bit. Untuk melakukan ini, anda perlu menambah 8 bit bawah nombor, kemudian tambah 8 bit atas dan tambah nilai bendera pembawa kepada hasil penambahannya. Jumlah 3 arahan. Dengan pemproses 16-bit, anda boleh melakukan operasi ini dengan satu arahan.

Dari segi sejarah, mikropemproses 4-bit telah digantikan oleh mikropemproses 8-bit, diikuti oleh mikropemproses 16-bit dan 32-bit. pemproses 32-bit untuk masa yang lama adalah standard dalam pengkomputeran harian. Dengan kemunculan teknologi x86–64, pemproses 64-bit mula digunakan untuk tujuan ini.

2.2 Keselarian aras arahan

Program komputer pada asasnya adalah aliran arahan yang dilaksanakan oleh pemproses. Tetapi anda boleh menukar susunan arahan ini, mengedarkannya ke dalam kumpulan yang akan dilaksanakan secara selari, tanpa mengubah hasil keseluruhan program. Teknik ini dikenali sebagai selari peringkat arahan. Kemajuan dalam keselarian peringkat arahan dalam seni bina komputer berlaku dari pertengahan 1980-an hingga pertengahan 1990-an.

Pemproses moden mempunyai saluran arahan berbilang peringkat. Setiap peringkat saluran paip sepadan dengan tindakan khusus yang dilakukan oleh pemproses dalam arahan itu pada peringkat itu. Pemproses dengan peringkat saluran paip N secara serentak boleh mempunyai sehingga N pelbagai arahan pada pada tahap yang berbeza kesempurnaan. Contoh klasik pemproses saluran paip ialah pemproses RISC dengan 5 peringkat: pengambilan arahan (IF), penyahkod arahan (ID), pelaksanaan arahan (EX), akses memori (MEM), tulis hasil ke daftar (WB) . Pemproses Pentium 4 mempunyai penghantar 35 peringkat.

Sesetengah pemproses, selain menggunakan saluran paip, mempunyai keupayaan untuk melaksanakan berbilang arahan secara serentak, yang menyediakan selari tambahan pada peringkat arahan. Kemungkinan pelaksanaan kaedah ini menggunakan superscalariti, di mana arahan boleh dikumpulkan bersama untuk pelaksanaan selari (selagi ia tidak mempunyai kebergantungan data). Pelaksanaan menggunakan paralelisme peringkat arahan eksplisit juga mungkin: VLIW dan EPIC.

2.3 Keselarian data

Idea utama pendekatan berdasarkan paralelisme data ialah satu operasi dilakukan pada semua elemen tatasusunan data sekaligus. Serpihan yang berbeza daripada tatasusunan sedemikian diproses pada pemproses vektor atau pada pemproses berbeza bagi mesin selari. Program ini mengedarkan data antara pemproses. Vektorisasi atau penyejajaran dalam kes ini paling kerap dilakukan pada peringkat penyusunan - menterjemah teks sumber program ke dalam arahan mesin. Peranan pengaturcara dalam kes ini biasanya datang kepada menentukan tetapan pengoptimuman vektor atau selari untuk pengkompil, arahan kompilasi selari, dan penggunaan bahasa khusus untuk pengkomputeran selari.

2.4 Keselarian tugas (multithreading)

Gaya pengaturcaraan berdasarkan keselarian tugasan membayangkan bahawa tugas pengkomputeran dibahagikan kepada beberapa subtugas yang agak bebas dan setiap pemproses dimuatkan dengan subtugasnya sendiri.

2.5 Sistem pengendalian teragih

OS yang diedarkan, mengedarkan kerja secara dinamik dan automatik merentasi pelbagai mesin sistem untuk pemprosesan, memaksa satu set mesin rangkaian berfungsi sebagai unipemproses maya. Pengguna OS yang diedarkan, secara amnya, tidak mempunyai maklumat tentang mesin yang mana kerjanya dijalankan.

OS yang diedarkan wujud sebagai sistem pengendalian tunggal pada skala sistem pengkomputeran. Setiap komputer pada rangkaian yang menjalankan OS teragih melaksanakan sebahagian daripada fungsi OS global ini. OS yang diedarkan menyatukan semua komputer pada rangkaian dalam erti kata bahawa mereka bekerja dalam kerjasama rapat antara satu sama lain untuk penggunaan yang berkesan semua sumber rangkaian komputer.

Meningkatkan prestasi komputer kerana apa?

Mengapa superkomputer mengira begitu cepat? Mungkin terdapat beberapa pilihan jawapan, antaranya dua mempunyai kelebihan yang jelas: pembangunan asas unsur dan penggunaan penyelesaian baharu dalam seni bina komputer.

Mari cuba cari yang mana antara faktor ini yang menentukan untuk mencapai prestasi rekod. Mari kita beralih kepada fakta sejarah yang diketahui. Pada salah satu komputer pertama di dunia - EDSAC, yang muncul pada tahun 1949 di Cambridge dan mempunyai masa jam 2 mikrosaat (2 * 10-6 saat), adalah mungkin untuk melakukan 2 * n operasi aritmetik dalam 18 * n milisaat , iaitu secara purata 100 operasi aritmetik sesaat. Bandingkan dengan satu nod pengkomputeran superkomputer moden Hewlett-Packard V2600: masa jam adalah lebih kurang 1.8 nanosaat (1.8*10-9 saat), dan prestasi puncak kira-kira 77 bilion operasi aritmetik sesaat.

Apa yang berlaku? Lebih setengah abad, prestasi komputer telah meningkat lebih daripada tujuh ratus juta sekali. Pada masa yang sama, keuntungan prestasi yang dikaitkan dengan mengurangkan masa kitaran jam daripada 2 mikrosaat kepada 1.8 nanosaat hanya kira-kira 1000 kali. Dari mana datangnya selebihnya? Jawapannya jelas - penggunaan penyelesaian baharu dalam seni bina komputer. Tempat utama di antara mereka diduduki oleh prinsip pemprosesan data selari, yang merangkumi idea pelaksanaan serentak (selari) beberapa tindakan.

Pemprosesan data selari, merangkumi idea pelaksanaan serentak beberapa tindakan, mempunyai dua jenis: saluran paip dan paralelisme sebenar. Kedua-dua jenis pemprosesan selari adalah intuitif, jadi kami hanya akan membuat penjelasan kecil.

Pemprosesan Selari. Jika peranti tertentu melakukan satu operasi setiap unit masa, maka ia akan melakukan seribu operasi dalam seribu unit. Jika kita mengandaikan bahawa terdapat lima peranti bebas yang serupa yang mampu beroperasi secara serentak, maka sistem lima peranti boleh melakukan seribu operasi yang sama bukan dalam seribu, tetapi dalam dua ratus unit masa. Begitu juga, sistem peranti N akan melakukan kerja yang sama dalam 1000/N unit masa. Analogi serupa boleh didapati dalam kehidupan: jika seorang askar menggali taman dalam masa 10 jam, maka sekumpulan lima puluh askar dengan kebolehan yang sama, bekerja serentak, akan menghadapi kerja yang sama dalam masa 12 minit - prinsip selari dalam tindakan!

By the way, perintis dalam pemprosesan selari aliran data ialah Academician A.A. Samarsky, yang melakukan pengiraan yang diperlukan untuk mensimulasikan letupan nuklear pada awal 50-an. Samarsky menyelesaikan masalah ini dengan menempatkan beberapa dozen wanita muda dengan menambah mesin di meja. Wanita muda itu memindahkan data antara satu sama lain hanya dalam perkataan dan meletakkan nombor yang diperlukan untuk menambah mesin. Oleh itu, khususnya, evolusi gelombang letupan telah dikira. Terdapat banyak kerja, wanita muda itu letih, dan Alexander Andreevich berjalan di antara mereka dan menggalakkan mereka. Ini, boleh dikatakan, adalah yang pertama sistem selari. Walaupun pengiraan untuk bom hidrogen telah dijalankan dengan mahir, ketepatannya adalah sangat rendah, kerana terdapat sedikit nod dalam grid yang digunakan, dan masa pengiraan terlalu lama.



Pemprosesan penghantar. Apa yang diperlukan untuk menambah dua nombor nyata, diwakili dalam bentuk titik terapung? Banyak operasi kecil seperti membandingkan pesanan, menyelaraskan pesanan, menambah mantissas, menormalkan, dll. Pemproses komputer pertama melakukan semua "operasi mikro" ini untuk setiap pasangan argumen, satu demi satu, sehingga mereka mencapai hasil akhir, dan hanya kemudian meneruskan pemprosesan pasangan seterusnya syarat.

Idea pemprosesan saluran paip adalah untuk mengasingkan peringkat individu melaksanakan operasi umum, dan setiap peringkat, setelah menyelesaikan kerjanya, akan meneruskan hasilnya ke peringkat seterusnya, sambil menerima bahagian baru data input. Kami mendapat keuntungan yang jelas dalam kelajuan pemprosesan dengan menggabungkan operasi jarak sebelumnya. Mari kita andaikan bahawa terdapat lima operasi mikro dalam operasi, setiap satu dilakukan dalam satu unit masa. Jika terdapat satu peranti bersiri yang tidak boleh dibahagikan, maka ia akan memproses 100 pasang hujah dalam 500 unit. Jika setiap operasi mikro dipisahkan ke peringkat berasingan (atau dipanggil peringkat) peranti penghantar, maka pada unit masa kelima, pada peringkat pemprosesan peranti sedemikian yang berbeza, lima pasang hujah pertama akan ditempatkan , dan keseluruhan set seratus pasang akan diproses dalam 5 + 99 = 104 unit masa - pecutan berbanding peranti bersiri hampir lima kali (mengikut bilangan peringkat penghantar).

Nampaknya pemprosesan saluran paip boleh berjaya digantikan dengan keselarian biasa, yang mana kami menduplikasi peranti utama seberapa kerap bilangan peringkat saluran paip sepatutnya diperuntukkan. Malah, lima peranti dalam contoh sebelumnya akan memproses 100 pasang hujah dalam 100 unit masa, yang lebih cepat daripada masa berjalan peranti penghantar! Apa masalahnya? Jawapannya mudah: dengan meningkatkan bilangan peranti lima kali ganda, kami meningkatkan kedua-dua jumlah peralatan dan kosnya dengan ketara. Bayangkan bahawa sebuah kilang kereta memutuskan untuk mengeluarkan barisan pemasangan sambil mengekalkan kadar pengeluaran kereta. Sekiranya sebelum ini terdapat seribu kereta di barisan pemasangan pada masa yang sama, maka, bertindak dengan analogi dengan contoh sebelumnya, adalah perlu untuk merekrut seribu pasukan, yang masing-masing (1) dapat memasang sepenuhnya kereta dari awal untuk menyelesaikan, melakukan beratus-ratus jenis operasi yang berbeza, dan (2) lakukan ini pada masa yang sama kereta itu sebelum ini berada di barisan pemasangan. Bolehkah anda bayangkan kos kereta sedemikian? Tidak? Saya bersetuju, ia sukar, melainkan Lamborghini terlintas di fikiran, tetapi itulah sebabnya pemprosesan talian pemasangan timbul...

Pengiraan mudah menunjukkan bahawa konfigurasi sistem sedemikian boleh menelan kos lebih daripada satu juta dolar AS - untuk keseronokan, anggarkan berapa banyak, katakan, hanya kos 4 TB memori capaian rawak? Beberapa persoalan semula jadi timbul: Apakah tugas yang sangat penting sehingga memerlukan komputer berjuta-juta dolar? Atau, apakah tugas yang sangat kompleks sehingga Pentium yang baik tidak mencukupi? Saya ingin mencari jawapan yang munasabah untuk soalan ini dan soalan yang serupa.

Untuk menilai kerumitan masalah yang diselesaikan dalam amalan, mari kita ambil yang khusus bidang subjek, sebagai contoh, pengoptimuman proses pengeluaran minyak. Kami mempunyai takungan minyak bawah tanah dengan sejumlah telaga yang digerudi: satu mengepam minyak ke permukaan, dan satu lagi mengepam air kembali. Ia adalah perlu untuk mensimulasikan keadaan dalam takungan tertentu untuk menganggar rizab minyak atau memahami keperluan untuk telaga tambahan.

Kami akan menerima skema yang dipermudahkan di mana kawasan yang dimodelkan dipetakan ke dalam kiub; walau bagaimanapun, ia akan mencukupi untuk menganggarkan bilangan operasi aritmetik yang diperlukan. Saiz kubus yang munasabah di mana keputusan yang munasabah boleh diperolehi ialah 100*100*100 mata. Pada setiap titik kubus, adalah perlu untuk mengira dari 5 hingga 20 fungsi: tiga komponen kelajuan, tekanan, suhu, kepekatan komponen (air, gas dan minyak - ini adalah set komponen minimum; dalam model yang lebih realistik, sebagai contoh, pecahan minyak yang berbeza dipertimbangkan). Selanjutnya, nilai fungsi ditemui dengan menyelesaikan persamaan tak linear, yang memerlukan dari 200 hingga 1000 operasi aritmetik. Dan akhirnya, jika proses tidak pegun sedang dikaji, i.e. anda perlu memahami bagaimana sistem ini bertindak mengikut masa, kemudian 100-1000 langkah masa diambil. Apa yang berlaku:

10 6 (mata grid)*10(fungsi)*500(operasi)*500(langkah masa) = 2.5*10 12

2500 bilion operasi aritmetik untuk melakukan hanya satu pengiraan! Bagaimana pula dengan menukar parameter model? Bagaimana pula dengan menjejaki keadaan semasa apabila data input berubah? Pengiraan sedemikian mesti dilakukan berkali-kali, yang mengenakan keperluan yang sangat ketat terhadap prestasi sistem pengkomputeran yang digunakan.

Contoh penggunaan superkomputer boleh didapati bukan sahaja dalam industri minyak. Berikut hanyalah senarai kecil bidang aktiviti manusia di mana penggunaan superkomputer sangat diperlukan:

  • industri automotif
  • pengeluaran minyak dan gas
  • farmakologi
  • ramalan cuaca dan pemodelan perubahan iklim
  • tinjauan seismik
  • reka bentuk peranti elektronik
  • sintesis bahan baharu
  • dan banyak lagi yang lain

Pada tahun 1995, badan Nissan Maxima dibuat 10% lebih kuat berkat penggunaan superkomputer Cray (The Atlanta Journal, 28 Mei 1995). Dengan bantuannya, bukan sahaja titik lemah badan ditemui, tetapi juga yang paling banyak kaedah yang berkesan penyingkiran mereka.

Menurut Mark Miller (Syarikat Motor Ford), untuk melakukan ujian kemalangan, di mana kereta sebenar merempuh dinding konkrit sambil mengukur parameter yang diperlukan, penggambaran dan kemudian memproses hasilnya, Ford memerlukan 10 hingga 150 prototaip model baharu dengan jumlah kos antara $4 juta hingga $60 juta. Penggunaan superkomputer telah mengurangkan bilangan prototaip sebanyak satu pertiga.

Contoh terkini ialah pembangunan salah satu sistem tempahan terbesar di dunia, Amadeus, yang digunakan oleh beribu-ribu agensi dengan 180,000 terminal di lebih seratus negara. Pemasangan dua pelayan Hewlett-Packard T600 dengan 12 pemproses setiap satu memungkinkan untuk meningkatkan tahap ketersediaan operasi sistem pusat sehingga 99.85% dengan beban semasa kira-kira 60 juta permintaan setiap hari.

Dan contoh serupa boleh didapati di mana-mana. Pada satu masa, penyelidik DuPont sedang mencari pengganti untuk klorofluorokarbon. Adalah perlu untuk mencari bahan yang mempunyai kualiti positif yang sama: tidak mudah terbakar, rintangan kakisan dan ketoksikan yang rendah, tetapi tanpa kesan berbahaya pada lapisan ozon bumi. Dalam satu minggu telah dijalankan pengiraan yang diperlukan pada superkomputer dengan jumlah kos kira-kira 5 ribu dolar. Menurut pakar DuPont, penggunaan kaedah penyelidikan eksperimen tradisional memerlukan kira-kira tiga bulan dan 50 ribu dolar, dan ini tidak mengambil kira masa yang diperlukan untuk mensintesis dan membersihkan jumlah bahan yang diperlukan.

Meningkatkan prestasi komputer kerana apa?

Mengapa superkomputer mengira begitu cepat? Mungkin terdapat beberapa pilihan jawapan, antaranya dua mempunyai kelebihan yang jelas: pembangunan asas elemen dan penggunaan penyelesaian baharu dalam seni bina komputer.

Mari cuba cari yang mana antara faktor ini yang menentukan untuk mencapai prestasi rekod. Mari kita beralih kepada fakta sejarah yang diketahui. Pada salah satu komputer pertama di dunia - EDSAC, yang muncul pada tahun 1949 di Cambridge dan mempunyai masa jam 2 mikrosaat (2 * 10-6 saat), adalah mungkin untuk melakukan 2 * n operasi aritmetik dalam 18 * n milisaat , iaitu secara purata 100 operasi aritmetik sesaat. Mari kita bandingkan dengan satu nod pengkomputeran superkomputer Hewlett-Packard V2600 moden: masa jam adalah lebih kurang 1.8 nanosaat (1.8 * 10-9 saat), dan prestasi puncak ialah kira-kira 77 bilion operasi aritmetik sesaat.

Apa yang berlaku? Lebih setengah abad, prestasi komputer telah meningkat lebih daripada tujuh ratus juta sekali. Pada masa yang sama, keuntungan prestasi yang dikaitkan dengan mengurangkan masa kitaran jam daripada 2 mikrosaat kepada 1.8 nanosaat hanya kira-kira 1000 kali. Dari mana datangnya selebihnya? Jawapannya jelas - penggunaan penyelesaian baharu dalam seni bina komputer. Tempat utama di antara mereka diduduki oleh prinsip pemprosesan data selari, yang merangkumi idea pelaksanaan serentak (selari) beberapa tindakan.

Pemprosesan data selari pada komputer

Pemprosesan data selari, merangkumi idea pelaksanaan serentak beberapa tindakan, mempunyai dua jenis: saluran paip dan paralelisme sebenar. Kedua-dua jenis pemprosesan selari adalah intuitif, jadi kami hanya akan membuat penjelasan kecil.

Pemprosesan Selari. Jika peranti tertentu melakukan satu operasi setiap unit masa, maka ia akan melakukan seribu operasi dalam seribu unit. Jika kita mengandaikan bahawa terdapat lima peranti bebas yang serupa yang mampu beroperasi secara serentak, maka sistem lima peranti boleh melakukan seribu operasi yang sama bukan dalam seribu, tetapi dalam dua ratus unit masa. Begitu juga, sistem peranti N akan melakukan kerja yang sama dalam 1000/N unit masa. Analogi serupa boleh didapati dalam kehidupan: jika seorang askar menggali taman dalam masa 10 jam, maka sekumpulan lima puluh askar dengan kebolehan yang sama, bekerja serentak, akan menghadapi kerja yang sama dalam masa 12 minit - prinsip selari dalam tindakan!

By the way, perintis dalam pemprosesan selari aliran data ialah Academician A.A. Samarsky, yang melakukan pengiraan yang diperlukan untuk mensimulasikan letupan nuklear pada awal 50-an. Samarsky menyelesaikan masalah ini dengan menempatkan beberapa dozen wanita muda dengan menambah mesin di meja. Wanita muda itu memindahkan data antara satu sama lain hanya dalam perkataan dan meletakkan nombor yang diperlukan untuk menambah mesin. Oleh itu, khususnya, evolusi gelombang letupan telah dikira. Terdapat banyak kerja, wanita muda itu letih, dan Alexander Andreevich berjalan di antara mereka dan menggalakkan mereka. Ini, boleh dikatakan, adalah sistem selari pertama. Walaupun pengiraan untuk bom hidrogen telah dijalankan dengan mahir, ketepatannya adalah sangat rendah, kerana terdapat sedikit nod dalam grid yang digunakan, dan masa pengiraan terlalu lama.

Pemprosesan penghantar. Apakah yang diperlukan untuk menambah dua nombor nyata yang diwakili dalam bentuk titik terapung? Banyak operasi kecil seperti membandingkan pesanan, menyelaraskan pesanan, menambah mantissas, menormalkan, dll. Pemproses komputer pertama melakukan semua "operasi mikro" ini untuk setiap pasangan hujah, satu demi satu, sehingga mereka mencapai hasil akhir, dan hanya kemudian meneruskan untuk memproses pasangan istilah seterusnya.

Idea pemprosesan saluran paip adalah untuk mengasingkan peringkat individu melaksanakan operasi umum, dan setiap peringkat, setelah menyelesaikan kerjanya, akan meneruskan hasilnya ke peringkat seterusnya, sambil menerima bahagian baru data input. Kami mendapat keuntungan yang jelas dalam kelajuan pemprosesan dengan menggabungkan operasi jarak sebelumnya. Mari kita andaikan bahawa terdapat lima operasi mikro dalam operasi, setiap satu dilakukan dalam satu unit masa. Jika terdapat satu peranti bersiri yang tidak boleh dibahagikan, maka ia akan memproses 100 pasang hujah dalam 500 unit. Jika setiap operasi mikro dipisahkan ke peringkat berasingan (atau dipanggil peringkat) peranti penghantar, maka pada unit masa kelima, pada peringkat pemprosesan peranti sedemikian yang berbeza, lima pasang hujah pertama akan ditempatkan , dan keseluruhan set seratus pasang akan diproses dalam 5 + 99 = 104 unit masa - pecutan berbanding peranti bersiri hampir lima kali (mengikut bilangan peringkat penghantar).

Nampaknya pemprosesan saluran paip boleh berjaya digantikan dengan keselarian biasa, yang mana kami menduplikasi peranti utama seberapa kerap bilangan peringkat saluran paip sepatutnya diperuntukkan. Malah, lima peranti dalam contoh sebelumnya akan memproses 100 pasang hujah dalam 100 unit masa, yang lebih cepat daripada masa berjalan peranti penghantar! Apa masalahnya? Jawapannya mudah: dengan meningkatkan bilangan peranti lima kali ganda, kami meningkatkan kedua-dua jumlah peralatan dan kosnya dengan ketara. Bayangkan bahawa sebuah kilang kereta memutuskan untuk mengeluarkan barisan pemasangan sambil mengekalkan kadar pengeluaran kereta. Sekiranya sebelum ini terdapat seribu kereta di barisan pemasangan pada masa yang sama, maka, bertindak dengan analogi dengan contoh sebelumnya, adalah perlu untuk merekrut seribu pasukan, yang masing-masing (1) dapat memasang sepenuhnya kereta dari awal untuk menyelesaikan, melakukan beratus-ratus jenis operasi yang berbeza, dan (2) lakukan ini pada masa yang sama kereta itu sebelum ini berada di barisan pemasangan. Bolehkah anda bayangkan kos kereta sedemikian? Tidak? Saya bersetuju, ia sukar, melainkan Lamborghini terlintas di fikiran, tetapi itulah sebabnya pemprosesan talian pemasangan timbul...

Sejarah Ringkas Kemunculan Paralelisme dalam Seni Bina Komputer

Hari ini, keselarian dalam seni bina komputer akan mengejutkan beberapa orang. Semua mikropemproses moden, sama ada Pentium III atau PA-8700, MIPS R14000, E2K atau Power3, menggunakan satu atau satu lagi jenis pemprosesan selari. Dalam teras Pentium 4, sehingga 126 operasi mikro boleh dilakukan secara serentak pada peringkat pelaksanaan yang berbeza. Pada pembentangan cip baharu dan dalam siaran akhbar daripada syarikat, ini dibentangkan sebagai perkataan terakhir teknologi dan kecanggihan sains, dan ini sememangnya berlaku jika kita mempertimbangkan pelaksanaan prinsip-prinsip ini dalam batasan miniatur kristal tunggal.

Pada masa yang sama, idea-idea ini sendiri muncul sejak dahulu lagi. Pada mulanya, mereka dilaksanakan dalam komputer yang paling maju, dan oleh itu tunggal, pada zaman mereka. Kemudian, selepas pembangunan teknologi yang betul dan pengeluaran yang lebih murah, mereka turun ke komputer kelas pertengahan, dan akhirnya hari ini semua ini terkandung sepenuhnya dalam stesen kerja dan komputer peribadi.

Untuk memastikan bahawa semua inovasi utama dalam seni bina pemproses moden sebenarnya, ia telah digunakan sejak zaman mikropemproses mahupun konsep superkomputer tidak wujud; mari kita ambil sedikit lawatan ke dalam sejarah, bermula hampir dari saat komputer pertama dilahirkan.

IBM 701 (1953), IBM 704 (1955): ingatan selari bit, aritmetik selari bit.
Semua komputer pertama (EDSAC, EDVAC, UNIVAC) mempunyai ingatan jujukan bit, yang daripadanya perkataan dibaca secara berurutan sedikit demi sedikit. Pertama secara komersial komputer yang boleh diakses, menggunakan memori selari bit (pada CRT) dan aritmetik selari bit, ialah IBM 701, dan model yang paling popular ialah IBM 704 (150 salinan dijual), yang, sebagai tambahan kepada perkara di atas, adalah yang pertama menggunakan memori pada teras ferit dan titik terapung AC perkakasan.

IBM 709 (1958): pemproses I/O bebas.
Pemproses komputer pertama menguruskan input/output sendiri. Walau bagaimanapun, kelajuan peranti luaran terpantas, yang pada masa itu adalah pita magnetik, adalah 1000 kali kurang daripada kelajuan pemproses, jadi pemproses pada dasarnya melahu semasa operasi I/O. Pada tahun 1958 Kepada komputer IBM 704 melampirkan 6 pemproses input/output bebas, yang, selepas menerima arahan, boleh berfungsi selari dengan pemproses utama, dan komputer itu sendiri dinamakan semula sebagai IBM 709. model ini ternyata berjaya secara mengejutkan, kerana bersama-sama dengan pengubahsuaian, kira-kira 400 salinan telah dijual, dan yang terakhir telah dimatikan pada tahun 1975 - 20 tahun kewujudan!

IBM STRETCH (1961): pandang ke hadapan, pelucutan ingatan.
Pada tahun 1956, IBM menandatangani kontrak dengan Los Alamos Scientific Laboratory untuk membangunkan komputer STRETCH, yang mempunyai dua asas ciri penting: Lihat ke hadapan untuk pengambilan arahan dan pelucutan memori ke dalam dua bank untuk menampung kelajuan pengambilan memori yang rendah dan kelajuan pelaksanaan.

ATLAS (1963): saluran paip arahan.
Prinsip penghantar pelaksanaan perintah pertama kali digunakan dalam mesin ATLAS, yang dibangunkan di Universiti Manchester. Pelaksanaan arahan dibahagikan kepada 4 peringkat: pengambilan arahan, pengiraan alamat operan, pengambilan operan, dan pelaksanaan operasi. Pipelining memungkinkan untuk mengurangkan masa pelaksanaan arahan daripada 6 μs kepada 1.6 μs. komputer ini mempunyai kesan yang besar pada kedua-dua seni bina dan perisian komputer: ia adalah yang pertama menggunakan OS berbilang program berdasarkan penggunaan memori maya dan sistem gangguan.

CDC 6600 (1964): peranti berfungsi bebas.
Control Data Corporation (CDC), dengan penyertaan langsung salah seorang pengasasnya, Seymour R. Cray, menghasilkan komputer CDC-6600 - komputer pertama yang menggunakan beberapa peranti berfungsi bebas. Sebagai perbandingan dengan hari ini, berikut adalah beberapa parameter komputer:

  • masa jam 100ns,
  • prestasi 2-3 juta operasi sesaat,
  • RAM dibahagikan kepada 32 bank 4096 perkataan 60-bit,
  • kitaran ingatan 1µs,
  • 10 unit berfungsi bebas.
Mesin itu merupakan satu kejayaan besar dalam pasaran saintifik, secara aktif menggantikan mesin daripada IBM.

CDC 7600 (1969): peranti berfungsi bebas penghantar.
CDC mengeluarkan komputer CDC-7600 dengan lapan unit berfungsi saluran paip bebas - gabungan pemprosesan selari dan saluran paip. Parameter utama:

  • jam 27.5 ns,
  • 10-15 juta operasi/saat,
  • 8 unit penghantar,
  • Memori 2 peringkat.

ILLIAC IV (1974): pemproses matriks.

Projek: 256 elemen pemproses (PE) = 4 kuadran 64PE, kebolehkonfigurasian semula: 2 kuadran 128PE atau 1 kuadran 256PE, kitaran jam 40ns, prestasi 1Gflop;

kerja bermula pada tahun 1967, pada akhir tahun 1971 sistem 1 kuadran telah dihasilkan, pada tahun 1974. ia telah mula beroperasi, pembangunan telah dijalankan sehingga 1975;

bahagian tengah: peranti kawalan (CU) + matriks 64 PE;

  • Unit kawalan ialah komputer ringkas dengan prestasi rendah yang mengawal matriks PE; semua matriks PE berfungsi dalam mod segerak, melaksanakan pada setiap saat arahan yang sama diterima daripada unit kawalan, tetapi pada data mereka sendiri;
  • PE mempunyai ALU sendiri dengan set arahan penuh, OP - 2Kwords 64 bit, kitaran memori 350ns, setiap PE mempunyai akses terus hanya kepada OPnya;
  • rangkaian pemajuan data: torus dua dimensi dengan anjakan mendatar 1 di sepanjang sempadan;

Walaupun hasilnya berbanding dengan projek: kosnya 4 kali lebih tinggi, hanya 1 kuadran dibuat, kitaran jam adalah 80ns, produktiviti sebenar adalah sehingga 50Mflop - projek ini mempunyai kesan yang besar terhadap seni bina mesin berikutnya yang dibina pada prinsip yang sama, khususnya: PEPE, BSP ,ICL DAP.

Hierarki ingatan.
Hierarki memori tidak berkaitan secara langsung dengan selari, namun, ia pastinya merujuk kepada ciri seni bina komputer yang sangat penting untuk meningkatkan prestasinya (melicinkan perbezaan antara kelajuan pemproses dan masa capaian memori). Tahap utama: daftar, memori cache, RAM, memori cakera. Masa pensampelan untuk tahap memori dari memori cakera ke daftar berkurangan, kos setiap 1 perkataan (bait) meningkat. Pada masa ini, hierarki sedemikian disokong walaupun pada komputer peribadi.

Apa yang digunakan di dunia sekarang?

Ke arah manakah pembangunan teknologi pengkomputeran berprestasi tinggi sedang berlaku? Terdapat empat arah utama.

Katakan bahawa dalam program anda pecahan operasi yang perlu dilaksanakan secara berurutan ialah f, di mana 0

Sekiranya 9/10 program dilaksanakan secara selari, dan 1/10 masih berurutan, maka pada dasarnya mustahil untuk mencapai kelajuan lebih daripada 10 kali, tanpa mengira kualiti pelaksanaan bahagian selari kod dan bilangan pemproses yang digunakan (jelas bahawa 10 diperolehi hanya jika kes apabila masa pelaksanaan bahagian selari ialah 0).

Mari kita lihat masalah dari sisi lain: apakah bahagian kod yang perlu dipercepatkan (dan oleh itu diperiksa terlebih dahulu) untuk mendapatkan pecutan yang ditentukan? Jawapannya boleh didapati dalam akibat undang-undang Amdahl: untuk mempercepatkan pelaksanaan program dalam q kali ia perlu untuk mempercepatkan tidak kurang daripada q kali tidak kurang daripada (1-1/ q) bahagian ke- program. Oleh itu, jika anda ingin mempercepatkan atur cara sebanyak 100 kali berbanding versi berurutan, maka anda perlu mendapatkan kelajuan yang tidak kurang pada sekurang-kurangnya 99.99% kod, yang hampir selalu membentuk bahagian penting program!

Oleh itu kesimpulan pertama - sebelum mengolah semula kod secara menyeluruh untuk beralih ke komputer selari (dan mana-mana superkomputer, khususnya, adalah sedemikian), anda perlu berfikir dengan teliti. Jika, setelah menilai algoritma yang tertanam dalam program, anda menyedari bahawa perkadaran operasi berurutan adalah besar, maka anda jelas tidak boleh bergantung pada pecutan yang ketara dan anda perlu memikirkan untuk menggantikan komponen individu algoritma.

Dalam sesetengah kes, sifat urutan algoritma tidak begitu sukar untuk diubah. Katakan program ini mempunyai serpihan berikut untuk mengira jumlah n nombor:

S = 0 Do i = 1, n s = s + a(i) EndDo (yang sama boleh dilakukan dalam mana-mana bahasa lain)

Mengikut sifatnya, ia adalah berurutan, kerana pada lelaran ke-i gelung hasil daripada (i-1) ke- diperlukan dan semua lelaran dilakukan satu demi satu. Kami mempunyai 100% operasi berurutan, yang bermaksud tiada kesan daripada menggunakan komputer selari. Pada masa yang sama, jalan keluar adalah jelas. Oleh kerana dalam kebanyakan program sebenar (soalan: mengapa dalam kebanyakan dan bukan semua?) tidak terdapat perbezaan yang ketara dalam susunan nombor yang ditambah, kami akan memilih skema penambahan yang berbeza. Pertama, kita dapati jumlah pasangan unsur jiran: a(1)+a(2), a(3)+a(4), a(5)+a(6), dsb. Ambil perhatian bahawa dengan skim ini, semua pasangan boleh ditambah secara serentak! Dalam langkah seterusnya kita akan bertindak dengan cara yang sama, mendapatkan versi algoritma selari.

Ia akan kelihatan dalam dalam kes ini semua masalah telah diselesaikan. Tetapi bayangkan bahawa pemproses yang tersedia untuk anda adalah heterogen dalam prestasi mereka. Ini bermakna akan ada saat apabila sebahagian daripada mereka masih bekerja, manakala yang lain telah melakukan segala-galanya dan berdiri sia-sia menunggu. Jika penyebaran dalam prestasi komputer adalah besar, maka kecekapan keseluruhan sistem dengan beban pemproses seragam akan menjadi sangat rendah.

Tetapi mari kita pergi lebih jauh dan menganggap bahawa semua pemproses adalah sama. Adakah masalah selesai? Tidak lagi! Pemproses telah menyelesaikan kerja mereka, tetapi hasilnya mesti dipindahkan ke yang lain untuk meneruskan proses penjumlahan ... dan pemindahan mengambil masa ... dan pada masa ini pemproses melahu lagi ...

Pendek kata, untuk memaksa sistem pengkomputeran selari atau superkomputer untuk berfungsi kecekapan maksimum Untuk program tertentu, ini, terus terang, bukanlah tugas yang mudah, kerana perlu menyelaraskan struktur program dan algoritma dengan teliti dengan ciri-ciri seni bina sistem pengkomputeran selari.

Soalan akhir. Adakah anda fikir pernyataan itu benar: daripada komputer yang lebih berkuasa, semakin cepat masalah ini dapat diselesaikan padanya?

Jawapan akhir. Tidak, itu tidak benar. Ini boleh dijelaskan dengan contoh harian yang mudah. Jika seorang penggali menggali lubang 1m*1m*1m dalam masa 1 jam, maka dua penggali yang serupa akan melakukannya dalam masa 30 minit - anda boleh percaya. Berapa lamakah 60 penggali untuk melakukan kerja ini? Dalam 1 minit? Sudah tentu tidak! Bermula dari titik tertentu, mereka hanya akan mengganggu satu sama lain, tidak mempercepatkan, tetapi memperlahankan proses. Ia adalah sama dalam komputer: jika tugas itu terlalu kecil, maka kita akan menghabiskan lebih banyak masa untuk mengagihkan kerja, menyegerakkan proses, memasang hasil, dsb., daripada kerja yang berguna secara langsung.

Jelas sekali bahawa tidak semuanya begitu mudah...

Makmal Selari Teknologi maklumat, Pusat Pengkomputeran Penyelidikan MSU

1.2 Pemprosesan data selari

1.2.1 Kemungkinan asas pemprosesan selari

Hampir semua algoritma yang dibangunkan sehingga kini adalah berurutan. Sebagai contoh, apabila menilai ungkapan a + b × c, anda mesti melakukan pendaraban dahulu dan kemudian baru melakukan penambahan. Jika komputer elektronik mengandungi nod penambahan dan pendaraban yang boleh beroperasi secara serentak, maka dalam kes ini nod penambahan akan terbiar menunggu nod pendaraban menyelesaikan kerjanya. Adalah mungkin untuk membuktikan kenyataan bahawa adalah mungkin untuk membina mesin yang akan memproses algoritma yang diberikan secara selari.

Ia adalah mungkin untuk membina m pemproses yang, apabila kerja serentak isu hasil yang diingini dalam satu kitaran jam komputer.

Mesin "multiprocessor" sedemikian secara teorinya boleh dibina untuk setiap algoritma tertentu dan nampaknya "memintas" sifat urutan algoritma. Walau bagaimanapun, tidak semuanya begitu mudah - terdapat banyak algoritma khusus yang tidak terhingga, jadi penaakulan abstrak yang dibangunkan di atas tidak begitu langsung berkaitan dengan kepentingan praktikal. Perkembangan mereka meyakinkan kami tentang kemungkinan penyejajaran, membentuk asas konsep paralelisme tanpa had, dan memungkinkan untuk mempertimbangkan dari perspektif umum pelaksanaan persekitaran pengkomputeran yang dipanggil - sistem berbilang pemproses yang dikonfigurasikan secara dinamik untuk algoritma tertentu.

1.2.2 Model abstrak pengkomputeran selari

Model pengkomputeran selari menyediakan pendekatan peringkat tinggi untuk pencirian dan perbandingan masa jalan pelbagai program, sambil mengabstraksi daripada perkakasan dan butiran pelaksanaan. Pertama model penting Pengkomputeran selari diperkenalkan oleh mesin capaian rawak selari (PRAM - Mesin Capaian Rawak Selari), yang menyediakan abstraksi mesin memori yang dikongsi (PRAM ialah lanjutan model RAM - Mesin Akses Rawak bagi mesin capaian rawak bersiri). Model BSP (Bulk Synchronous Parallel) menggabungkan kedua-dua abstraksi memori yang dikongsi dan diedarkan. Semua pemproses diandaikan untuk melaksanakan arahan secara serentak; dalam hal melaksanakan arahan yang sama, PRAM ialah mesin SIMD abstrak (SIMD - Strim Arahan Tunggal / Strim Data Berbilang - aliran arahan tunggal bersama-sama dengan aliran data berbilang), bagaimanapun, pemproses boleh melaksanakan arahan yang berbeza. Arahan utama ialah membaca dari ingatan, menulis ke ingatan dan logik biasa dan operasi aritmetik.

Model PRAM adalah ideal dalam erti kata bahawa setiap pemproses boleh mengakses mana-mana lokasi memori pada bila-bila masa (Operasi tulis yang dilakukan oleh satu pemproses boleh dilihat oleh semua pemproses lain dalam susunan ia dilakukan, tetapi penulisan dilakukan oleh pemproses yang berbeza, mungkin kelihatan dalam sebarang susunan). Contohnya, setiap pemproses dalam PRAM boleh membaca data daripada sel memori atau menulis data ke sel yang sama. Pada mesin selari sebenar ini, sudah tentu, tidak berlaku, kerana modul memori adalah tahap fizikal atur akses kepada sel memori yang sama. Selain itu, masa capaian memori pada mesin sebenar tidak sama kerana kehadiran cache dan mungkin organisasi hierarki modul ingatan.

Model PRAM asas menyokong bacaan dan tulis serentak (dalam konteks ini selari). Submodel PRAM diketahui yang mengambil kira peraturan yang membolehkan mengelakkan situasi konflik apabila beberapa pemproses mengakses secara serentak ingatan bersama.

Teorem Brent membolehkan anda memodelkan litar elemen berfungsi menggunakan mesin capaian rawak selari (PRAM). Elemen fungsional boleh bertindak sebagai 4 utama (menjalankan operasi logik BUKAN, DAN, ATAU, XOR – penafian, logik DAN, logik ATAU dan eksklusif ATAU, masing-masing), NAND dan NOR yang lebih kompleks (NAND dan NOR), dan sebarang kerumitan.

Dalam perkara berikut, diandaikan bahawa kelewatan (iaitu, masa tindak balas - masa selepas nilai isyarat yang dimaksudkan muncul pada output elemen selepas nilai pada input telah ditetapkan) adalah sama untuk semua elemen berfungsi.

Kami menganggap litar elemen berfungsi yang disambungkan tanpa membentuk kitaran (kami menganggap bahawa elemen berfungsi mempunyai sebarang bilangan input, tetapi tepat satu output - elemen dengan beberapa output boleh digantikan oleh beberapa elemen dengan satu output). Bilangan input menentukan kuasa input elemen, dan bilangan input yang mana output elemen disambungkan menentukan kuasa outputnya. Biasanya diandaikan bahawa kuasa input semua elemen yang digunakan adalah terhad dari atas, tetapi kuasa output boleh menjadi apa-apa. Saiz litar merujuk kepada bilangan elemen di dalamnya, nombor terhebat elemen pada laluan dari input litar ke output elemen dipanggil kedalaman elemen ini (kedalaman litar adalah sama dengan kedalaman terbesar unsur konstituennya).

Rajah 1. Simulasi litar saiz 15, kedalaman 5 dengan dua pemproses menggunakan mesin capaian rawak selari (mesin PRAM)

Rajah 1 menunjukkan hasil pemodelan saiz litar (jumlah bilangan pemproses) n=15 dengan kedalaman litar ( bilangan maksimum elemen pada setiap tahap kedalaman) d=5 dengan bilangan pemproses p=2 (elemen simulasi serentak digabungkan ke dalam kumpulan mengikut kawasan segi empat tepat, dan bagi setiap kumpulan langkah di mana elemennya disimulasikan ditunjukkan; pemodelan berlaku secara berurutan dari atas ke bawah dalam susunan kedalaman yang semakin meningkat, pada setiap kedalaman p keping pada satu masa). Menurut teorem Brent, pemodelan skema sedemikian akan mengambil masa tidak lebih daripada ceil(15/2+1)=9 langkah.

Di bawah istilah pemprosesan selari kita akan memahami pelaksanaan tugas, langkah tugas (item), program, subrutin, gelung, pengendali dan arahan secara serentak. Pemprosesan maklumat selari boleh digunakan untuk dua tujuan utama:

1. Meningkatkan produktiviti komputer dan pesawat bukan melalui penambahbaikan asas elemen, tetapi melalui organisasi proses pengkomputeran yang berkesan.

2. Memastikan kebolehpercayaan tinggi pesawat dengan menduplikasi peralatan komputer.

nasi. 5.1. Tahap paralelisme

Meningkatkan prestasi komputer dan komputer adalah matlamat utama penggunaan pemprosesan selari; oleh sebab ini, komputer seperti pelayan berbilang pemproses, kerangka utama dan superkomputer mempunyai seni bina selari.

Pemprosesan maklumat selari boleh dijalankan pada beberapa peringkat (Rajah 5.1).

Jelas sekali, semakin rendah tahap, semakin halus penghancuran proses perisian, semakin kecil, seperti yang mereka katakan, “ butiran paralelisme" Secara umum, adalah mungkin untuk melaksanakan paralelisme pada satu peringkat dan pada beberapa peringkat secara serentak. Pemprosesan tunggal pemproses bebas melaksanakan selari pada tahap 1. Pemprosesan vektor terdiri daripada pelaksanaan selari gelung pada tahap 2 dan boleh dilakukan pada satu atau beberapa pemproses. Tahap 3 dan 4 sepadan dengan komputer berbilang pemproses. Keselarian tahap 5 adalah tipikal untuk sistem pengkomputeran berbilang mesin.



Terdapat dua cara utama untuk mengatur pemprosesan selari:

· gabungan masa peringkat penyelesaian tugas yang berbeza;

· penyelesaian serentak pelbagai tugas atau bahagian satu tugas;

Cara pertama- menggabungkan dalam masa peringkat menyelesaikan masalah yang berbeza adalah pemprosesan pelbagai program maklumat. Pemprosesan berbilang atur cara telah lama digunakan secara meluas untuk meningkatkan prestasi komputer dan komputer. Perbincangan terperinci mengenai pemprosesan pelbagai program merujuk kepada topik " OS"dan melangkaui skop buku teks ini.

Cara kedua- penyelesaian serentak pelbagai tugas atau bahagian satu tugas - hanya mungkin jika terdapat beberapa peranti pemprosesan. Dalam kes ini, ciri tugas atau aliran tugas tertentu digunakan, yang membolehkan penyelarasan.

Jenis selari berikut boleh dibezakan, membenarkan pelaksanaan ciri algoritma tugas individu dan benangnya.

1. Keselarian semula jadi tugas bebas.

2. Keselarian objek atau data.

3. Keselarian cabang tugas atau program.

Mari kita lihat jenis paralelisme ini.

1. Keselarian semula jadi tugas bebas terletak pada hakikat bahawa aliran berterusan tugas yang tidak berkaitan diterima pada input sistem komputer, i.e. penyelesaian kepada sebarang masalah tidak bergantung kepada hasil penyelesaian masalah lain. Dalam kes ini, penggunaan beberapa peranti pemprosesan dengan sebarang kaedah penyepaduan (integrasi ke dalam sistem) meningkatkan prestasi sistem.

Contoh tipikal paralelisme semula jadi ialah ketibaan permintaan pengguna ke tapak web maklumat. Setiap permintaan menjana prosedur berasingan untuk pelaksanaannya, yang tidak bergantung pada prosedur lain yang serupa.

2. Keselarian objek atau data berlaku apabila program yang sama (atau hampir sama) mesti memproses set data tertentu yang memasuki sistem secara serentak.

Ini mungkin, sebagai contoh, tugas memproses isyarat dari stesen radar: semua isyarat diproses menggunakan program yang sama. Contoh lain ialah pemprosesan maklumat daripada penderia yang mengukur parameter yang sama secara serentak dan dipasang pada beberapa objek yang serupa.

Program jenis ini boleh mempunyai saiz dan kerumitan yang berbeza-beza, dari yang sangat mudah yang mengandungi beberapa operasi hingga program besar dalam ratusan dan ribuan operasi. Dalam kes ini, pelaksanaan operasi selari dicapai dengan meningkatkan bilangan peranti pemprosesan, setiap satunya mampu melaksanakan urutan perintah secara autonomi pada set data yang berasingan. Selalunya ciri utama program sedemikian (khususnya program untuk memproses vektor dan matriks) ialah arahan yang sama mesti dilaksanakan pada koleksi besar data asas yang saling berkaitan dalam beberapa cara, dan operasi yang sepadan boleh dilakukan pada semua data secara serentak. Dalam kes ini, masa untuk menyelesaikan masalah dikurangkan mengikut perkadaran dengan bilangan peranti pemprosesan.

3. Keselarian cabang tugas atau program- salah satu jenis keselarian yang paling biasa dalam pemprosesan maklumat. Ia terletak pada hakikat bahawa apabila menyelesaikan satu masalah, bahagian individunya boleh dipisahkan - cawangan, yang, dengan kehadiran beberapa peranti pemprosesan, boleh dilaksanakan secara selari. Dalam kes ini, hanya cawangan bebas tugas, i.e. bahagian-bahagian itu yang mana syarat-syarat berikut dipenuhi:

· tiada nilai keluaran dari cabang masalah ini adalah nilai input untuk cabang lain seperti itu (kekurangan sambungan berfungsi);

· syarat-syarat untuk melaksanakan satu cawangan tidak bergantung kepada keputusan atau ciri-ciri yang diperolehi semasa pelaksanaan cawangan lain (mengawal kebebasan).

Idea yang baik tentang keselarian cawangan diberikan oleh bentuk selari peringkat (LPF) program, contoh yang ditunjukkan dalam Rajah. 5.2.

Program ini dibentangkan dalam bentuk satu set cawangan yang terletak di beberapa peringkat - peringkat. Bulatan dengan nombor di dalam menunjukkan cawangan. Panjang cawangan diwakili oleh nombor di sebelah bulatan dan memberitahu bilangan unit masa cawangan ini dilaksanakan. Anak panah menunjukkan data input dan hasil pemprosesan. Data input dilambangkan dengan simbol X, data output dengan simbol Y. Simbol X mempunyai indeks digital yang lebih rendah yang menunjukkan nombor kuantiti input; Simbol Y mempunyai indeks digital di bahagian bawah dan di bahagian atas; nombor di bahagian atas sepadan dengan nombor cawangan semasa keputusan yang diberikan diperoleh, dan nombor di bahagian bawah bermaksud nombor siri keputusan yang diperoleh semasa pelaksanaan cawangan program ini. Cawangan tugas bebas yang tidak berkaitan antara satu sama lain diletakkan pada satu peringkat, i.e. keputusan menyelesaikan mana-mana cawangan peringkat tertentu bukan data input untuk cawangan lain peringkat yang sama.

nasi. 5.2. Contoh borang atur cara selari bertingkat

Ditunjukkan dalam Rajah. 5.2 program ini mengandungi 9 cawangan yang terletak di 3 peringkat. Menggunakan program yang umumnya agak mudah ini sebagai contoh, seseorang boleh mengenal pasti kelebihan sistem pengkomputeran yang merangkumi beberapa peranti pemprosesan, dan masalah yang timbul.

Mari kita andaikan bahawa panjang i cabang ke- diwakili oleh bilangan unit masa t i yang diperlukan untuk pelaksanaannya. Kemudian mudah untuk mengira bahawa ia akan mengambil masa untuk melaksanakan keseluruhan program pada 1 pemproses T 1:

T 1=S (10+20+15+30+55+10+15+25+15)=195

Jika kita membayangkan bahawa program itu dilaksanakan oleh dua peranti pemprosesan (pemproses) yang beroperasi secara bebas antara satu sama lain, maka masa yang diperlukan untuk menyelesaikan masalah akan dikurangkan. Walau bagaimanapun, kali ini, seperti yang mudah dilihat, akan berbeza-beza bergantung pada urutan pelaksanaan cawangan bebas.

Pertimbangkan, sebagai contoh, versi program ini ditunjukkan dalam Rajah. 5.2. Biarkan pemproses 1 melaksanakan cawangan 1-3-4-6-7-9, dan pemproses 2 melaksanakan cawangan 2-5-8. Dalam Rajah. Rajah 5.3 menunjukkan rajah pemasaan pelaksanaan pemproses cawangan program.

nasi. 5.3. Penguraian cawangan program merentas 2 pemproses

Adalah mudah untuk mengira bahawa pemproses 1 membelanjakan 105, dan pemproses 2 - 100 unit masa. Dalam kes ini, terdapat dua tempoh masa apabila salah satu pemproses terpaksa melahu - P1 dengan tempoh 10 unit dan P2 dengan tempoh 5 unit masa. Selang P1, di mana hanya pemproses 2 berfungsi, telah terbentuk kerana fakta bahawa cawangan 7 bergantung pada cawangan 5 (menjelang masa cawangan 6 selesai, data Y 5 1 belum siap). Selang P1, di mana hanya pemproses 1 berfungsi, telah terbentuk kerana pengiraan akhir oleh pemproses 2.

Oleh itu, pada sistem dua pemproses, program kami akan dilaksanakan sepenuhnya dalam masa tidak kurang daripada 105 unit masa. Nilai yang mencirikan pengurangan dalam masa yang diperlukan untuk menyelesaikan masalah pada beberapa pemproses berbanding dengan menggunakan pemproses tunggal dipanggil pecutan membilang S dan mengira sebagai

Pekali selari berbeza dari 0 hingga 1 (dari 0 hingga 100%) dan mencerminkan kecekapan menggunakan sumber pengkomputeran. Dalam contoh kami adalah mudah untuk mengira bahawa pecutan S= 195/105 = 1.86, dan faktor selari K p= 0.93. Seperti yang dapat kita lihat, disebabkan oleh masa henti salah satu pemproses, pecutan pengiraan adalah kurang daripada 2, i.e. bilangan pemproses yang digunakan. Ambil perhatian bahawa dalam contoh kami, kelewatan masa yang dikaitkan dengan menukar konteks program (menukar cawangan) dan pemindahan data dari satu cawangan ke cawangan lain tidak diambil kira. Walau bagaimanapun, disebabkan ciri algoritma program, sebahagian daripada pengiraan dalam selang P1 dan P2 dilakukan oleh hanya satu pemproses, i.e. sebenarnya berurutan.

Mari kita pertimbangkan kes umum program yang bahagiannya secara algoritma pengiraan berurutan(nisbah masa pengiraan berurutan kepada jumlah masa pengiraan program) ialah nilai tertentu f. Dalam kes ini, masa pelaksanaan program pada sistem adalah dari hlm pemproses tidak boleh kurang daripada

Nisbah ini dipanggil undang-undang Amdahl. Menggunakan contoh program dalam Rajah. 5.2 kita dapat melihat bahawa perkadaran pengiraan berjujukan adalah f= 15/195. Menggantikan nilai ini ke dalam formula undang-undang Amdahl, kami memperoleh untuk sistem dua pemproses pecutan maksimum 1.86 kali, yang sepadan dengan nilai yang dikira sebelumnya.

Untuk menggambarkan operasi undang-undang Amdahl, kami memberikan contoh berikut. Biarkan bahagian pengiraan berurutan dalam beberapa program ialah 10%. Kemudian pecutan pengiraan maksimum pada 100 pemproses tidak akan melebihi 9.2. Pekali selari hanya akan menjadi 9.2%. Pada 10 pemproses, pecutan akan menjadi 5.3, dan pekali selari akan menjadi 53%. Adalah mudah untuk melihat bahawa walaupun sebahagian kecil pengiraan berurutan, sudah pada tahap teori, tanpa mengambil kira kelewatan yang tidak dapat dielakkan dalam komputer sebenar, secara serius mengehadkan keupayaan untuk menskala program.

Mari tentukan berapa bahagian maksimum yang sepatutnya f pengiraan berurutan dalam atur cara supaya mungkin untuk mendapatkan pecutan pengiraan yang telah ditetapkan S dengan pekali selari maksimum K p. Untuk melakukan ini, kami menyatakan bahagian pengiraan berjujukan daripada undang-undang Amdahl:

Perhubungan (5.6) menentukan sesuatu yang sangat penting akibat daripada undang-undang Amdahl. Bagi mempercepatkan program dalamq kali, ia adalah perlu untuk mempercepatkan tidak kurang daripadaq kali tidak kurang daripada () bahagian ke- program. Sebagai contoh, untuk mendapatkan kelajuan 100x, anda perlu menyamakan 99.99% daripada keseluruhan program.

Sebagai tambahan kepada penyejajaran algoritma, untuk menyelesaikan masalah dengan cawangan selari menggunakan beberapa peranti pemprosesan, organisasi proses yang sesuai diperlukan, yang menentukan cara untuk menyelesaikan masalah dan menjana maklumat yang diperlukan tentang kesediaan setiap cawangan. Walau bagaimanapun, semua ini agak mudah untuk dilaksanakan apabila tempoh pelaksanaan setiap cawangan diketahui dengan agak tepat. Dalam amalan ini sangat jarang berlaku: dalam senario kes terbaik ada satu atau anggaran masa yang lain. Oleh itu, menyusun jadual kerja yang optimum atau hampir dengan optimum adalah tugas yang agak sukar.

Ia juga harus diperhatikan bahawa terdapat kesukaran tertentu yang berkaitan dengan mengasingkan cawangan bebas semasa membangunkan program. Pada masa yang sama, apabila menyelesaikan banyak masalah kompleks, hanya pengaturcaraan dengan pemilihan cawangan bebas boleh mengurangkan masa penyelesaian dengan ketara. Khususnya, masalah algebra matriks, pengaturcaraan linear, pemprosesan isyarat spektrum, transformasi Fourier langsung dan songsang, dsb. sesuai dengan pemprosesan selari jenis ini.