Dalam bidang teknik komputer, arsitektur komputer adalah konsep perencanaan dan struktur pengoperasian dasar dari suatu sistem komputer. Arsitektur komputer ini merupakan rencana cetak-biru dan deskripsi fungsional dari kebutuhan bagian perangkat keras yang didesain (kecepatan proses dan sistem interkoneksinya). Dalam hal ini, implementasi perencanaan dari masing–masing bagian akan lebih difokuskan terutama, mengenai bagaimana CPU akan bekerja, dan mengenai cara pengaksesan data dan alamat dari dan ke memori cache, RAM, ROM, cakram keras, dll). Beberapa contoh dari arsitektur komputer ini adalah arsitektur von Neumann, CISC, RISC, blue Gene, dll.

Abstraksi dari sebuah arsitektur komputer dan hubungannya dengan bagian perangkat keras, firmware, assembler, kernel, sistem operasi, dan perangkat lunak aplikasinya

Arsitektur komputer juga dapat didefinisikan dan dikategorikan sebagai ilmu dan sekaligus seni mengenai cara interkoneksi komponen-komponen perangkat keras untuk dapat menciptakan sebuah komputer yang memenuhi kebutuhan fungsional, kinerja, dan target biayanya.

Arsitektur komputer ini paling tidak mengandung 3 sub-kategori:


Implementasi arsitektur MIPS yang pipelined. Pipelining adalah konsep kunci dalam arsitektur komputer.

Riwayat

Arsitektur komputer yang didokumentasikan pertama adalah dalam korespondensi antara Charles Babbage dan Ada Lovelace, menggambarkan mesin analitis. Ketika membangun komputer Z1 pada tahun 1936, Konrad Zuse menjelaskan dalam dua aplikasi paten untuk proyek masa depannya bahwa instruksi mesin dapat disimpan dalam penyimpanan yang sama yang digunakan untuk data, yaitu konsep program yang tersimpan. Dua contoh awal dan penting lainnya adalah:

  • Makalah John von Neumann tahun 1945, Draft Pertama Laporan tentang EDVAC, yang menggambarkan organisasi elemen logis; dan
  • Kalkulator Elektronik Usulan Alan Turing yang lebih rinci untuk Mesin Komputasi Otomatis, juga 1945 dan yang mengutip karya John von Neumann.

Istilah "arsitektur" dalam literatur komputer dapat ditelusuri ke karya Lyle R. Johnson, Frederick P. Brooks, Jr., dan Mohammad Usman Khan, semua anggota departemen Mesin Organisasi di pusat penelitian utama IBM pada tahun 1959. Johnson memiliki kesempatan untuk menulis komunikasi riset kepemilikan tentang Stretch, superkomputer yang dikembangkan IBM untuk Los Alamos National Laboratory (pada saat itu dikenal sebagai Los Alamos Scientific Laboratory). Untuk menggambarkan tingkat detail untuk mendiskusikan komputer yang dihias dengan mewah, ia mencatat bahwa deskripsi format, jenis instruksi, parameter perangkat keras, dan peningkatan kecepatan berada pada level "arsitektur sistem" - sebuah istilah yang sepertinya lebih berguna daripada "organisasi mesin . ”

Selanjutnya, Brooks, seorang perancang Stretch, memulai Bab 2 dari sebuah buku (Merencanakan Sistem Komputer: Peregangan Proyek, ed. W. Buchholz, 1962) dengan menulis,

arsitektur komputer, seperti arsitektur lainnya, adalah seni menentukan kebutuhan pengguna struktur dan kemudian merancang untuk memenuhi kebutuhan tersebut seefektif mungkin dalam kendala ekonomi dan teknologi.

Brooks melanjutkan untuk membantu mengembangkan jajaran komputer IBM System / 360 (sekarang disebut IBM zSeries), di mana "arsitektur" menjadi kata benda yang mendefinisikan "apa yang perlu diketahui pengguna". Kemudian, pengguna komputer menggunakan istilah ini dengan banyak cara yang kurang eksplisit.

Arsitektur komputer paling awal dirancang di atas kertas dan kemudian secara langsung dibangun ke dalam bentuk perangkat keras akhir. Kemudian, prototipe arsitektur komputer secara fisik dibangun dalam bentuk logika transistor-transistor (TTL) komputer-seperti prototipe 6800 dan PA-RISC-diuji, dan tweak, sebelum melakukan ke bentuk perangkat keras akhir. Pada 1990-an, arsitektur komputer baru biasanya "dibangun", diuji, dan di-tweak — di dalam beberapa arsitektur komputer lain dalam simulator arsitektur komputer; atau di dalam FPGA sebagai mikroprosesor lunak; atau keduanya — sebelum berkomitmen ke bentuk perangkat keras akhir.

Subkategori

Disiplin arsitektur komputer memiliki tiga subkategori utama:

1. Arsitektur Set Instruksi, atau ISA. ISA mendefinisikan kode mesin yang dibaca dan bertindak oleh prosesor serta ukuran kata, mode alamat memori, register prosesor, dan tipe data.

2. Arsitektur mikro, atau organisasi komputer menggambarkan bagaimana prosesor tertentu akan menerapkan ISA. [14] Ukuran cache CPU komputer misalnya, adalah masalah yang umumnya tidak ada hubungannya dengan ISA.

3. Desain Sistem mencakup semua komponen perangkat keras lainnya dalam sistem komputasi. Ini termasuk:

1. Pemrosesan data selain CPU, seperti akses memori langsung (DMA).

2. Masalah lain seperti virtualisasi, multiprocessing, dan fitur perangkat lunak.

Ada jenis arsitektur komputer lainnya. Jenis berikut digunakan di perusahaan besar seperti Intel, dan dihitung untuk 1% dari semua arsitektur komputer

  • Macroarchitecture: lapisan arsitektur lebih abstrak daripada arsitektur mikro
  • Arsitektur Set Instruksi Majelis (ISA): Perakit cerdas dapat mengkonversi bahasa assembly abstrak yang umum ke sekelompok mesin menjadi bahasa mesin yang sedikit berbeda untuk implementasi yang berbeda
  • Programmer Visible Macroarchitecture: alat bahasa tingkat yang lebih tinggi seperti compiler s dapat mendefinisikan antarmuka yang konsisten atau kontrak untuk programmer menggunakan mereka, mengabstraksikan perbedaan antara ISA yang mendasari, UISA, dan mikroarsitektur s. Misalnya. C, C ++, atau Java mendefinisikan standar Programmer Visible Macroarchitecture yang berbeda.
  • UISA (Arsitektur Instruksi Set Microcode) —sebuah kelompok mesin dengan arsitektur tingkat perangkat keras yang berbeda dapat berbagi arsitektur mikrokoda umum, dan karenanya UISA. Templat:Kutipan diperlukan
  • Arsitektur Pin: Fungsi perangkat keras yang harus mikroprosesor sediakan untuk platform perangkat keras, misalnya, x86 pin A20M, FERR / IGNNE atau FLUSH. Juga, pesan yang harus dipancarkan oleh prosesor sehingga cache eksternal dapat dibatalkan (dikosongkan). Fungsi arsitektur Pin lebih fleksibel daripada fungsi ISA karena perangkat keras eksternal dapat beradaptasi dengan pengkodean baru, atau mengubah dari pin ke pesan. Istilah "arsitektur" cocok, karena fungsi harus disediakan untuk sistem yang kompatibel, meskipun metode detailnya berubah.

Peran

Definisi

Tujuannya adalah untuk merancang komputer yang memaksimalkan kinerja sambil menjaga konsumsi daya di cek, biaya rendah dibandingkan dengan jumlah kinerja yang diharapkan, dan juga sangat dapat diandalkan. Untuk ini, banyak aspek yang harus dipertimbangkan yang mencakup desain set instruksi, organisasi fungsional, desain logika, dan implementasi. Implementasinya melibatkan desain sirkuit terpadu, pengemasan, daya, dan pendinginan. Optimasi desain membutuhkan keakraban dengan kompiler, sistem operasi untuk desain logika, dan pengemasan.

Arsitektur bagian instruksi / Instruction set architecture

Satu set instruksi arsitektur (ISA) adalah antarmuka antara perangkat lunak dan perangkat keras komputer dan juga dapat dilihat sebagai pandangan programmer tentang mesin. Komputer tidak memahami bahasa pemrograman tingkat tinggi seperti Java, C ++, atau sebagian besar bahasa pemrograman yang digunakan. Prosesor hanya memahami instruksi yang dikodekan dalam beberapa mode numerik, biasanya sebagai bilangan biner. Alat-alat perangkat lunak, seperti compiler, menerjemahkan bahasa tingkat tinggi tersebut ke dalam instruksi yang dapat dimengerti oleh prosesor.

Selain instruksi, ISA mendefinisikan item di komputer yang tersedia untuk program — mis. tipe data, register, mode pengalamatan, dan memori. Instruksi mencari item yang tersedia ini dengan indeks daftar (atau nama) dan mode pengalamatan memori.

ISA komputer biasanya dijelaskan dalam instruksi manual kecil, yang menggambarkan bagaimana instruksi dikodekan. Juga, mungkin mendefinisikan nama mnemonik pendek (samar-samar) untuk instruksi. Nama-nama dapat dikenali oleh alat pengembangan perangkat lunak yang disebut assembler. Assembler adalah program komputer yang menerjemahkan bentuk ISA yang dapat dibaca manusia ke dalam bentuk yang dapat dibaca komputer. Disassemblers juga tersedia secara luas, biasanya di debugger dan program perangkat lunak untuk mengisolasi dan memperbaiki malfungsi dalam program komputer biner.

ISA bervariasi dalam kualitas dan kelengkapan. ISA yang baik berkompromi antara kenyamanan programmer (betapa mudahnya kode tersebut dipahami), ukuran kode (seberapa banyak kode diperlukan untuk melakukan tindakan tertentu), biaya komputer untuk menafsirkan instruksi (lebih banyak kerumitan berarti lebih banyak perangkat keras yang diperlukan untuk decode dan jalankan instruksi), dan kecepatan komputer (dengan perangkat keras decoding yang lebih kompleks datang waktu decode lebih lama). Organisasi memori menentukan bagaimana instruksi berinteraksi dengan memori, dan bagaimana memori berinteraksi dengan dirinya sendiri.

Selama emulasi desain perangkat lunak (emulator) dapat menjalankan program yang ditulis dalam satu set instruksi yang diusulkan. Emulator modern dapat mengukur ukuran, biaya, dan kecepatan untuk menentukan apakah ISA tertentu memenuhi sasarannya.

Organisasi komputer / Computer organization

Organisasi komputer membantu mengoptimalkan produk berbasis kinerja. Sebagai contoh, insinyur perangkat lunak perlu mengetahui kekuatan pemrosesan prosesor. Mereka mungkin perlu mengoptimalkan perangkat lunak untuk mendapatkan kinerja paling banyak dengan harga terendah. Ini memerlukan analisis yang cukup rinci tentang organisasi komputer. Misalnya, dalam kartu SD, para desainer mungkin perlu mengatur kartu sehingga sebagian besar data dapat diproses dengan cara tercepat.

Organisasi komputer juga membantu merencanakan pemilihan prosesor untuk proyek tertentu. Proyek-proyek multimedia mungkin memerlukan akses data yang sangat cepat, sementara mesin virtual mungkin perlu interupsi cepat. Terkadang tugas-tugas tertentu membutuhkan komponen tambahan juga. Misalnya, komputer yang mampu menjalankan mesin virtual memerlukan perangkat keras memori virtual sehingga memori komputer virtual yang berbeda dapat tetap dipisahkan. Organisasi dan fitur komputer juga memengaruhi konsumsi daya dan biaya prosesor.

Implementasi

Setelah satu set instruksi dan mikro-arsitektur dirancang, mesin praktis harus dikembangkan. Proses desain ini disebut implementasi . Implementasi biasanya tidak dianggap desain arsitektur, melainkan perangkat keras rekayasa desain. Implementasinya dapat dipecah menjadi beberapa langkah:

  • 'Circuit Implementation' melakukan transistor - desain tingkat elemen dasar (gerbang, multiplexer, kait dll.) Serta beberapa blok yang lebih besar (ALU s, cache dll.) yang dapat diimplementasikan pada tingkat gerbang log, atau bahkan pada tingkat fisik jika desain meminta untuk itu.
  • 'Implementasi Fisik' menggambar sirkuit fisik. Komponen sirkuit yang berbeda ditempatkan dalam chip floorplan atau di papan dan kabel yang menghubungkannya dibuat.
  • 'Desain Validasi' tes komputer secara keseluruhan untuk melihat apakah itu bekerja di semua situasi dan semua pengaturan waktu. Setelah proses validasi desain dimulai, desain pada tingkat logika diuji menggunakan emulator logika. Namun, ini biasanya terlalu lambat untuk menjalankan uji realistis. Jadi, setelah melakukan koreksi berdasarkan tes pertama, prototipe dikonstruksi menggunakan Field-Programmable Gate-Arrays (FPGA s). Sebagian besar proyek hobi berhenti pada tahap ini. Langkah terakhir adalah menguji prototipe sirkuit terpadu. Sirkuit terpadu mungkin memerlukan beberapa desain ulang untuk memperbaiki masalah.

Untuk CPU s, seluruh proses implementasi diatur secara berbeda dan sering disebut Desain CPU.

Tujuan desain

Bentuk yang tepat dari sistem komputer tergantung pada batasan dan tujuan. Arsitektur komputer biasanya memperdagangkan standar, kekuatan versus kinerja, biaya, kapasitas memori, latency (latency adalah jumlah waktu yang diperlukan untuk informasi dari satu node untuk melakukan perjalanan ke sumber) dan throughput. Kadang-kadang pertimbangan lain, seperti fitur, ukuran, berat, keandalan, dan kemampuan pengembangan juga merupakan faktor.

Skema yang paling umum melakukan analisis daya mendalam dan mencari tahu bagaimana menjaga konsumsi daya tetap rendah, sambil mempertahankan kinerja yang memadai.

Performa

Kinerja komputer modern sering digambarkan dalam IPC (instruksi per cycle). Ini mengukur efisiensi arsitektur pada setiap frekuensi clock. Karena tingkat yang lebih cepat dapat membuat komputer lebih cepat, ini adalah pengukuran yang bermanfaat. Komputer yang lebih tua memiliki IPC terhitung serendah 0,1 instruksi per siklus. Prosesor modern sederhana dengan mudah mencapai dekat 1. Prosesor Superscalar dapat mencapai tiga hingga lima IPC dengan mengeksekusi beberapa instruksi per siklus clock.

Menghitung instruksi bahasa mesin akan menyesatkan karena mereka dapat melakukan berbagai jumlah pekerjaan di ISA berbeda. "Petunjuk" dalam pengukuran standar bukan merupakan hitungan instruksi bahasa mesin aktual ISA, tetapi unit pengukuran, biasanya didasarkan pada kecepatan arsitektur komputer VAX.

Banyak orang yang terbiasa mengukur kecepatan komputer dengan laju jam (biasanya dalam MHz atau GHz). Ini mengacu pada siklus per detik dari jam utama CPU. Namun, metrik ini agak menyesatkan, karena mesin dengan clock rate yang lebih tinggi belum tentu memiliki performa yang lebih baik. Akibatnya, produsen beralih dari clock speed sebagai ukuran kinerja.

Faktor-faktor lain mempengaruhi kecepatan, seperti campuran unit fungsional, kecepatan bus, memori yang tersedia, dan jenis dan urutan instruksi dalam program.

Ada dua jenis kecepatan utama: latensi dan throughput. Latensi adalah waktu antara awal suatu proses dan penyelesaiannya. Throughput adalah jumlah pekerjaan yang dilakukan per satuan waktu. Interrupt latency adalah waktu respons maksimum yang dijamin sistem ke acara elektronik (seperti ketika disk drive selesai memindahkan beberapa data).

Kinerja dipengaruhi oleh pilihan desain yang sangat beragam - misalnya, pipelining prosesor biasanya membuat latensi menjadi lebih buruk, tetapi membuat hasil lebih baik. Komputer yang mengontrol mesin biasanya membutuhkan latensi interrupt yang rendah. Komputer-komputer ini beroperasi dalam lingkungan waktu nyata dan gagal jika operasi tidak selesai dalam jumlah waktu tertentu. Misalnya, rem anti-lock yang dikendalikan komputer harus mulai mengerem dalam waktu singkat yang dapat diprediksi setelah pedal rem dirasakan atau jika tidak ada kegagalan rem akan terjadi.

Benchmarking memperhitungkan semua faktor ini dengan mengukur waktu yang dibutuhkan komputer untuk menjalankan serangkaian program uji. Meskipun pembandingan menunjukkan kekuatan, tidak seharusnya Anda memilih komputer. Seringkali mesin yang diukur terpecah pada ukuran yang berbeda. Misalnya, satu sistem mungkin menangani aplikasi ilmiah dengan cepat, sementara yang lain mungkin membuat gim video lebih lancar. Selain itu, perancang dapat menargetkan dan menambahkan fitur-fitur khusus untuk produk mereka, melalui perangkat keras atau perangkat lunak, yang memungkinkan patokan khusus untuk melakukan eksekusi dengan cepat tetapi tidak menawarkan keuntungan yang serupa dengan tugas umum.

Efisiensi daya

Efisiensi daya adalah ukuran penting lainnya dalam komputer modern. Efisiensi daya yang lebih tinggi sering dapat diperdagangkan untuk kecepatan yang lebih rendah atau biaya yang lebih tinggi. Pengukuran khas ketika mengacu pada konsumsi daya dalam arsitektur komputer adalah MIPS / W (jutaan instruksi per detik per watt).

Sirkuit modern memiliki daya yang lebih sedikit yang dibutuhkan per transistor karena jumlah transistor per keping bertambah. Ini adalah karena setiap transistor yang dimasukkan ke dalam chip baru membutuhkan catu daya sendiri dan membutuhkan jalur baru untuk dibangun untuk menguasainya. Namun jumlah transistor per keping mulai meningkat pada tingkat yang lebih lambat. Oleh karena itu, efisiensi daya mulai menjadi sama pentingnya, jika tidak lebih penting daripada memasang lebih banyak transistor ke dalam satu chip. Desain prosesor terbaru telah menunjukkan penekanan ini karena mereka lebih fokus pada efisiensi daya daripada menjejalkan sebanyak mungkin transistor ke dalam chip tunggal. Dalam dunia komputer tertanam, efisiensi daya telah lama menjadi tujuan penting di samping throughput dan latensi.

Catatan kaki