Apa saja jenis arsitektur komputer?

20

Saya akan membaca buku "Elemen sistem komputasi". Buku ini mengajarkan cara membangun seluruh komputer dari awal. Sementara saya hanya menjelajahi bab-bab tentang arsitektur komputer, saya perhatikan bahwa semuanya berfokus pada arsitektur Von Neumann. Saya hanya ingin tahu apa arsitektur lain dan kapan & di mana mereka digunakan.

Saya tahu hanya dua, satu adalah Von Neumann dan yang kedua adalah Harvard. Saya juga tahu tentang RISC yang digunakan dalam UC AVR.

Rick_2047
sumber
2
Ada yang ketiga, yang dimodifikasi Harvard. Harvard murni tidak akan dapat menggunakan penyimpanan yang sama untuk menyimpan program dan data. Oleh karena itu hampir setiap implementasi Harvard telah dimodifikasi untuk memungkinkan memori instruksi ditangani sebagai data.
gorilla
1
pertanyaan yang bagus
Jenis Anonim

Jawaban:

27

Ada banyak jenis arsitektur komputer.

Salah satu cara mengategorikan arsitektur komputer adalah dengan jumlah instruksi yang dijalankan per jam. Banyak mesin komputer membaca satu instruksi pada satu waktu dan menjalankannya (atau mereka berusaha keras untuk bertindak seolah-olah)mereka melakukan itu, bahkan jika secara internal mereka melakukan hal-hal superscalar dan out-of-order mewah). Saya menyebut mesin seperti itu sebagai mesin "von Neumann", karena semuanya memiliki hambatan von Neumann. Mesin-mesin tersebut termasuk arsitektur CISC, RISC, MISC, TTA, dan DSP. Mesin tersebut termasuk mesin akumulator, mesin register, dan mesin stack. Mesin lain membaca dan menjalankan beberapa instruksi pada satu waktu (VLIW, super-skalar), yang melanggar batas satu instruksi per jam, tetapi masih menekan bottleneck von Neumann pada sejumlah instruksi yang lebih besar per jam. Namun mesin lain tidak dibatasi oleh bottleneck von Neumann, karena mereka melakukan pra-muat semua operasi mereka sekali pada saat power-up dan kemudian memproses data tanpa instruksi lebih lanjut. Mesin non-Von-Neumann tersebut termasuk arsitektur aliran data,

Cara lain untuk mengkategorikan arsitektur komputer adalah dengan menghubungkan (s) antara CPU dan memori. Beberapa mesin memiliki memori yang disatukan, sehingga satu alamat sesuai dengan satu tempat dalam memori, dan ketika memori itu adalah RAM, seseorang dapat menggunakan alamat itu untuk membaca dan menulis data, atau memuat alamat itu ke penghitung program untuk mengeksekusi kode. Saya menyebut mesin ini mesin Princeton. Mesin lain memiliki beberapa ruang memori yang terpisah, sehingga penghitung program selalu merujuk ke "memori program" tidak peduli alamat apa yang dimuat ke dalamnya, dan normal membaca dan menulis selalu pergi ke "memori data", yang merupakan lokasi terpisah biasanya berisi berbagai informasi bahkan ketika bit dari alamat data kebetulan identik dengan bit dari alamat memori program. Mesin-mesin itu "murni Harvard" atau "

Beberapa orang menggunakan definisi sempit "mesin von Neumann" yang tidak termasuk mesin Harvard. Jika Anda salah satu dari orang-orang itu, maka istilah apa yang akan Anda gunakan untuk konsep yang lebih umum tentang "mesin yang memiliki hambatan von Neumann", yang mencakup mesin Harvard dan Princeton, dan tidak termasuk NON-VON?

Sebagian besar sistem embedded menggunakan arsitektur Harvard. Beberapa CPU adalah "Harvard murni", yang mungkin merupakan pengaturan paling sederhana untuk dibangun di perangkat keras: bus alamat ke memori program read-only secara eksklusif terhubung ke penghitung program, seperti banyak Microchip PICmicros awal. Beberapa mesin Harvard yang dimodifikasi, di samping itu, juga memasukkan konstanta ke dalam memori program, yang dapat dibaca dengan instruksi khusus "baca data konstan dari memori program" (berbeda dari instruksi "baca dari memori data"). Perangkat lunak yang berjalan dalam jenis mesin Harvard di atas tidak dapat mengubah memori program, yang secara efektif ROM untuk perangkat lunak itu. Beberapa sistem tertanam "diprogram sendiri", biasanya dengan memori program dalam memori flash dan "blok memori flash khusus" instruksi dan instruksi khusus "tulis blok memori flash" (berbeda dari instruksi "tulis ke data memori" normal), selain instruksi "baca data dari memori program". Beberapa Microchip PICmicros dan Atmel AVR terbaru adalah mesin Harvard yang dapat diprogram sendiri.

Cara lain untuk mengelompokkan CPU adalah berdasarkan jam mereka. Sebagian besar komputer sinkron - mereka memiliki satu jam global. Beberapa CPU tidak sinkron - mereka tidak punya jam - termasuk ILLIAC I dan ILLIAC II, yang pada satu waktu adalah superkomputer tercepat di dunia.

Tolong bantu meningkatkan deskripsi semua jenis arsitektur komputer di http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture .

davidcary
sumber
2
Wow, rasa malu pada Anda karena menahan pengetahuan itu begitu lama SETELAH saya mengajukan pertanyaan.
Rick_2047
3
@Rick - Sepertinya jawaban itu membutuhkan waktu lama untuk menulis. Bersyukurlah bahwa davidcary meluangkan waktu untuk menjawab pertanyaan Anda! Beberapa orang tidak beroperasi dengan jadwal yang sama dengan Anda.
Kevin Vermeer
2
@reemrevnivek yang dimaksudkan sebagai cowok bercanda.
Rick_2047
Alangkah baiknya jika jawaban ini ditandai sebagai jawaban wiki komunitas.
Trygve Laugstøl
8

CISC adalah "lawan" dari RISC. Sedangkan RISC lebih memilih untuk memiliki instruksi sederhana yang mudah untuk dioptimalkan oleh kompiler dan seringkali berukuran sama, CISC menyukai instruksi kompleks dengan ukuran yang bervariasi.

Sebagai contoh, instruksi pop di CISC akan memodifikasi stack pointer dan menempatkan data dari stack ke register lain. Namun, prosesor RISC akan membaca data dengan satu instruksi dan kemudian memodifikasi stack pointer dengan instruksi kedua. (umumnya; ada beberapa pengecualian, seperti PowerPC yang dapat memperbarui penunjuk tumpukan dan mendorong data ke tumpukan, tapi itu pengecualian)

Karena instruksi RISC semuanya berukuran sama, pembongkaran lebih mudah ditulis. Mendesain prosesor juga lebih mudah, karena saluran pipa tidak harus memperhitungkan berbagai ukuran instruksi. Namun, kepadatan kode CISC cenderung lebih baik, baik karena instruksi kompleks memerlukan byte lebih sedikit untuk mewakili jumlah operasi yang sama, dan karena panjang instruksi variabel memungkinkan untuk beberapa "kompresi".

Ada juga arsitektur eksotis lainnya, seperti VLIW / EPIC. Arsitektur semacam ini dirancang dengan mempertimbangkan pemrosesan paralel. Namun, mereka tidak melakukannya dengan sangat baik, karena mereka menempatkan beban yang sangat berat pada pengoptimal untuk dioptimalkan, sedangkan arsitektur lain memiliki jendela instruksi mewah yang meringankan beberapa beban pengoptimalan dari kompiler.

ajs410
sumber
1
jika Anda suka, terimalah.
Kortuk
5

Ya, ada sesuatu seperti ENIAC, di mana pada dasarnya Anda memiliki ALU individual dan Anda "memprogram" mereka dengan menghubungkan output dari satu alu ke input alu lain yang akan melakukan operasi selanjutnya pada variabel perantara tersebut. "Register" dan penyimpanan Anda adalah kabel yang menghubungkan alus.

Baru-baru ini saya membeli buku "Komputer Pertama - Sejarah dan Arsitektur (History of Computing)", yang sebagian berfokus pada topik yang tepat ini. Saya tidak merekomendasikan untuk membeli buku ini walaupun itu hanya kumpulan makalah akademis, sulit dibaca dan saya curiga mungkin diterbitkan (gratis) di tempat lain. (Saya menyerah sebelum menyelesaikan pendahuluan)

Setelah ingatan ditemukan dan menjadi praktis, kami agak terbiasa dengan dua yang populer Von Neumann dan Harvard. Mengeksekusi dari kabel kembali, kartu punch, pita kertas atau hal-hal seperti itu menjadi kurang praktis. Dan ada tumpukan berdasarkan (zpu misalnya), yang saya duga mungkin berada di bawah kategori Harvard dan bukan miliknya sendiri.

Bagaimana dengan platform von neumann yang mem-boot dari read-only (dalam penggunaan normal) flash pada satu antarmuka memori dan telah membaca / menulis data ram di yang lain (yang kadang-kadang dapat beroperasi pada keduanya secara paralel) tetapi dari perspektif program berada dalam satu ruang alamat? Atau yang memiliki beberapa memori / antarmuka internal dan eksternal semua yang beroperasi secara paralel tetapi von neumann karena berada di ruang alamat yang sama.

Dan apa gunanya platform harvard di mana prosesor tidak dapat mengakses memori instruksi sebagai data untuk mengubah / meningkatkan bootloader atau agar bootloader memuat program berikutnya yang akan dijalankan? Mengapa bukan itu arsitektur von neumann? Prosesor yang dijalankan dan beroperasi pada memori yang sama pada antarmuka yang sama kemungkinan berurutan (instruksi mengambil dan menulis memori tidak terjadi pada saat yang sama) secara?

Dua arsitektur berbasis memori populer lebih dekat daripada mereka berbeda dalam implementasi IMO saat ini.

Di mana gpu jatuh? Atau bisnis tempat saya bekerja, pemroses jaringan (NPU). Di mana Anda memiliki microengines (prosesor) tujuan khusus yang relatif kecil ini yang dijalankan dari ram seperti harvard (dialamatkan tetapi Anda tidak ingin melakukan itu karena alasan kinerja), beroperasi pada berbagai data domba jantan yang masing-masing memiliki ruang alamat terpisah (prosesor terpisah) instruksi untuk setiap ruang), (ruang memori yang beroperasi secara paralel) dan melalui domba-domba itu menyerahkan data perantara untuk memiliki perhitungan selanjutnya dilakukan oleh microengine berikutnya dalam alu kabel (eniac) seperti mode? Apa yang akan Anda sebut itu? Apakah npus dan gpus hanya menyukai arsitektur harvard yang dimodifikasi?

old_timer
sumber
"Apa gunanya platform harvard di mana prosesor tidak dapat ... memuat program berikutnya untuk dijalankan?" Banyak CPU memiliki program tetap yang tidak dapat diubah oleh perangkat lunak yang berjalan pada CPU itu. Satu keuntungan dari pengaturan ini adalah membuatnya tidak mungkin untuk "merusak" sistem dengan bug yang menulis ke memori acak, atau pembaruan perangkat lunak yang buruk, atau bahkan dengan pembaruan perangkat lunak yang baik dan daya yang tidak tepat waktu gagal. Itu membuatnya lebih sulit untuk memperbarui perangkat lunak - tetapi sungguh, berapa kali Anda mengubah perangkat lunak dalam microwave Anda?
davidcary
2
Pada microwave tidak ada, tapi saya menghabiskan cukup banyak waktu saya coding untuk mikrokontroler dan memuat ulang perangkat lunak berkali-kali sehari. Terbatas pada sistem berbasis rom kecil, bebas bug, masalah bricking mudah dipecahkan dengan menggunakan von neumann. Sistem yang Anda gambarkan tidak banyak berguna untuk peningkatan kinerja bus yang terpisah, fitur lain dari arsitektur harvard. Jadi maksud saya adalah, arsitektur harvard hanya tidak skala dengan baik tanpa cara memuat program, membuatnya agak usang.
old_timer
1
Hmm, mereka menyebut harvard cortex-m3 padahal sebenarnya tidak, sama dengan avr (yah mereka menyebutnya harvard yang dimodifikasi). Saya yakin ada beberapa prosesor arsitektur harvard murni (PIC), dan dulu lebih murni von neumann, tetapi sebagian besar dimodifikasi harvard atau dimodifikasi von neumann (akses data dan instruksi secara paralel) membuatnya lebih sama daripada berbeda. Di situlah saya menuju pada jawaban saya, harvard murni dan von neumann murni keduanya dengan cepat menjadi usang. Poster ingin tahu apa lagi yang ada di luar sana, yah hampir semuanya di luar sana.
old_timer
4

Baik arsitektur von Neumann dan Harvard dapat digunakan dengan prosesor RISC seperti AVR dan ARM. AVR menggunakan Harvard, sedangkan beberapa chip ARM menggunakan von Neumann dan beberapa menggunakan Harvard.

Leon Heller
sumber
-1 untuk menyortir Anda di bawah jawaban yang lebih menarik.
Oskar Skog