Prosesor dari dalam. Prosesor dari dalam Desain motherboard komputer

Saat ini, pangsa pasar utama mikroprosesor universal ditempati oleh mikroprosesor 32-bit dan 64-bit. Bab ini menjelaskan mikroprosesor Intel 32-bit yang membentuk keluarga IA-32 (Intel Architecture-32). Arsitektur ini menjadi dasar arsitektur 64-bit x86‑64 Intel dan arsitektur AMD-64 AMD.

2.1 Komposisi dan fungsi register

Register disebut memori berkecepatan tinggi yang terletak di dalam CPU dan dirancang untuk penyimpanan data online dan akses cepat ke sana dari komponen internal prosesor. Misalnya, saat mengoptimalkan loop program untuk kecepatan, variabel yang diakses di dalam loop terletak di register prosesor, bukan di memori. Totalitas dari semua register tersebut kadang-kadang disebut sebagai memory scratchpad (CoRAM).

2.1.1 Register dasar

Gambar 2.1 menunjukkan struktur register utama dan nama mereka. Ada 8 register tujuan umum(RON), register 6 segmen, register bendera, register penunjuk instruksi, serta register sistem, register debug dan uji.

Register tujuan umum (RON). Register ini terutama digunakan untuk melakukan operasi aritmatika dan transfer data. Setiap RON dapat diakses sebagai register 32-bit atau sebagai register 16-bit. Beberapa register dapat diakses sebagai 8-bit. Misalnya, register EAX adalah 32 bit, tetapi 16 bit yang lebih rendah disebut register AX. 8 bit atas register AX disebut AH, dan 8 bit lebih rendah disebut AL. Bagian 16-bit dari register indeks dan register penunjuk biasanya hanya digunakan saat menulis program untuk mode pengalamatan nyata, mis. untuk MS-DOS atau emulasinya di Windows.

Arti singkatan nama register :

Awalan E di awal nama register diperluas.

Postfix X di akhir nama register berarti register sebenarnya.

AX - Akumulator (penggerak).

BX - Register dasar (register dasar).

CX - Penghitung (penghitung).

DX - Data (data).

AL - Akumulator rendah (bagian bawah register AX).

AH - Akumulator tinggi (setengah lebih tinggi dari register AX).

BL - Basis rendah (bagian bawah register BX).

BH - Basis tinggi (setengah lebih tinggi dari register BX).

CL - Penghitung rendah (bagian bawah dari register CX).

CH - Penghitung tinggi (separuh lebih tinggi dari register CX).

DL - Data rendah (bagian bawah register DX).

DH - Data tinggi (setengah lebih tinggi dari register DX).

SI - Indeks sumber (indeks sumber). Berisi alamat sumber saat ini.

DI - Indeks tujuan (indeks penerima). Berisi alamat penerima saat ini.

BP - Penunjuk dasar (penunjuk dasar). Untuk akses acak ke data di dalam tumpukan

SP - Penunjuk tumpukan (penunjuk tumpukan). Berisi penunjuk tumpukan teratas.

CS - Segmen kode (segmen kode).

DS - Segmen data (segmen data).

ES - Segmen Data Ekstra (segmen data tambahan).

FS - Segmen Data yang Diperluas (segmen data tambahan).

GS - Segmen Data yang Diperluas (segmen data tambahan).

SS - Segmen tumpukan (segmen tumpukan).

IP - Penunjuk instruksi (penunjuk instruksi atau penghitung instruksi).

F - Bendera (daftar bendera).

GDTR - Daftar tabel deskriptor global (daftar tabel deskriptor global).

IDTR - Daftar tabel deskriptor gangguan (daftar tabel deskriptor gangguan).

TR - Daftar tugas (daftar tugas).

LDTR - Daftar tabel deskriptor lokal (register tabel deskriptor lokal).

DR - Daftar debug (daftar debug).

TR - Daftar uji (daftar uji).

CR - Register kontrol (register kontrol).

Fitur penggunaan register. Saat mengeksekusi instruksi oleh prosesor, beberapa register tujuan umum memiliki tujuan khusus.

    Isi register EAX secara otomatis digunakan saat menjalankan instruksi perkalian dan pembagian. Karena register ini biasanya diasosiasikan dengan eksekusi instruksi aritmatika, sering disebut sebagai register akumulator yang diperluas (diperluas aki).

    Register ECX secara otomatis digunakan oleh prosesor sebagai penghitung siklus.

    Register ESP mengakses data yang disimpan di stack. Tumpukan adalah area memori sistem, yang diakses sesuai dengan prinsip FILO (Masukan pertama - keluaran terakhir) "ditulis pertama, dibaca terakhir". Register ini biasanya tidak pernah digunakan untuk melakukan aritmatika normal dan instruksi transfer data. Ini sering disebut register penunjuk tumpukan yang diperluas (diperluas tumpukan penunjuk). Register ESP menunjuk ke alamat bagian atas tumpukan (alamat di mana variabel berikutnya akan didorong oleh perintah PUSH).

    Register ESI dan EDI umumnya digunakan untuk instruksi transfer data berkecepatan tinggi dari satu lokasi memori ke lokasi memori lainnya. Oleh karena itu mereka terkadang dipanggil register indeks sumber yang diperluas dan penerima data (diperluas sumber indeks dan diperluas tujuan indeks). Register ESI adalah alamat sumber, dan berisi alamat awal blok informasi untuk operasi "pindahkan blok" (alamat lengkap DS:ESI), dan register EDI adalah alamat tujuan (alamat lengkap ES:EDI).

    Register EBP umumnya digunakan oleh kompiler bahasa tingkat tinggi untuk merujuk ke parameter fungsi dan untuk merujuk ke variabel lokal yang dialokasikan pada stack. Itu tidak boleh digunakan untuk melakukan operasi aritmatika biasa atau untuk memindahkan data, kecuali saat menggunakan teknik pemrograman khusus oleh pemrogram berpengalaman. Hal ini sering disebut sebagai kasus diperpanjang penunjuk bingkai tumpukan (diperluas bingkai penunjuk). Register EUR berisi alamat dari mana informasi didorong atau dimunculkan ke tumpukan (atau "kedalaman" tumpukan). Parameter fungsi memiliki pergeseran positif relatif terhadap EBP, variabel lokal memiliki pergeseran negatif, dan alamat lengkap dari lokasi memori ini disimpan dalam pasangan register SS:EBP.

    Register EIP menyimpan offset dari alamat instruksi. Alamat lengkap untuk instruksi yang dapat dieksekusi selanjutnya disimpan dalam pasangan register CS:EIP.

    Register ESP, EBP, ESI, EDI menyimpan offset alamat data.

register segmen. Register ini digunakan sebagai register dasar saat mengakses area RAM yang telah dialokasikan sebelumnya, yang disebut segmen. Ada tiga jenis segmen dan, karenanya, register segmen:

    kode (CS), mereka hanya menyimpan perintah prosesor, mis. kode mesin program;

    data (DS, ES, FS dan GS), mereka menyimpan area memori yang dialokasikan untuk variabel program dan data;

    stack (SS), mereka menyimpan area sistem memori yang disebut tumpukan, di mana variabel lokal (sementara) dari program dan parameter yang diteruskan ke fungsi saat dipanggil didistribusikan.

Register segmen dimuat oleh pemilih segmen, yang diimbangi ke Global Descriptor Table (GDT) atau Local Descriptor Table (LDT).

Bit register segmen berisi informasi berikut:

0 - 1. RPL - Tingkat Keistimewaan yang Diminta. Tingkat hak istimewa yang diminta.

2. TI - Indikator Tabel. Bit tabel indikator. Memberi tahu prosesor tempat mencari pemilih yang ditentukan. Jika bit disetel, maka prosesor membaca pemilih dari tabel deskriptor lokal. Jika bitnya jelas, maka prosesor membaca pemilih dari tabel deskriptor global.

3 - 15. Bit-bit ini menyimpan indeks tabel deskriptor global atau lokal.

Register CS terlalu kecil untuk menampung segmen kode, sehingga harus disetel ke segmen yang dapat dieksekusi. Register SS terlalu kecil untuk menampung segmen tumpukan, sehingga harus disetel ke segmen data yang dapat ditulisi.

Tingkat hak istimewa yang diatur dalam register segmen CS adalah tingkat hak istimewa dari program yang sedang berjalan, dan disebut Tingkat Hak Istimewa Saat Ini (CPL). Register segmen DS, ES, FS, GS adalah untuk data dan harus disetel ke segmen data dengan izin menulis. Tingkat hak istimewa yang diperlukan oleh masing-masing pemilih ini harus lebih besar dari tingkat hak istimewa CPL saat ini.

Register deskriptor bayangan dikaitkan dengan masing-masing dari enam register segmen. Alamat dasar segmen 32-bit, batas 20-bit, dan atribut (izin) dari tabel deskriptor ditulis ulang ke dalam register bayangan dalam mode terlindungi.

Register penunjuk instruksi. Register EIP menyimpan offset relatif terhadap awal program (offset) dari instruksi berikutnya yang akan dieksekusi. Ada beberapa instruksi di prosesor yang mempengaruhi isi register ini. Mengubah alamat yang disimpan dalam register EIP menyebabkan transfer kontrol ke bagian baru dari program.

Daftar bendera EF (EFLAGZ) . Bit register ini disebut flag dan bertanggung jawab atas eksekusi tertentu dari beberapa instruksi CPU, atau mencerminkan hasil eksekusi perintah oleh ALU. Bendera register tercantum dalam Tabel 2.1. Bit 22 hingga 31 dicadangkan.

Tabel 2.1 Daftar bendera

Untuk menganalisis bit register ini, instruksi prosesor khusus disediakan. Mereka mengatakan bendera dipasang, ketika bit bendera adalah 1, dan bendera itu menjatuhkan, ketika nilai bitnya adalah 0. Selain itu, register EF yang diperluas berisi lima flag baru dibandingkan dengan register F.

Kontrol bendera. Status bit dalam register EFLAGS, sesuai dengan flag kontrol, dapat diubah oleh pemrogram menggunakan perintah prosesor khusus. Bendera ini (DF, IF, TF) mengontrol eksekusi beberapa instruksi CPU:

8. TF - Perangkap bendera. Lacak bendera (mode langkah). Ketika disetel (TF=1), setelah eksekusi setiap instruksi, interupsi internal INT 1 dipanggil, yang menghentikan proses komputasi, sehingga memungkinkan untuk memeriksa isi register.

9.IF - Bendera pengaktifan interupsi. Bendera pengaktifan interupsi. Dengan IF=1, interupsi perangkat keras bertopeng diaktifkan. Jika JIKA=0, itu dinonaktifkan.

10. DF - Bendera arah. Tandai untuk mengontrol arah pemrosesan array dalam perintah string. Ketika DF=1, register indeks SI, DI, yang mengambil bagian dalam perintah string, secara otomatis dikurangi dengan jumlah byte operan, sehingga memproses string dari akhir ke awal. Dengan DF=0, mereka bertambah, memproses dari awal hingga akhir string.

Bendera status. Bendera ini mencerminkan berbagai indikasi hasil eksekusi instruksi CPU aritmatika dan logis:

0.CF - Membawa bendera. Bendera carry disetel jika, saat melakukan operasi aritmatika yang tidak ditandatangani, diperoleh angka yang lebar bitnya melebihi lebar bit bidang hasil yang dialokasikan untuknya. Dalam instruksi shift, flag CF memperbaiki nilai bit paling signifikan.

2. PF - Bendera paritas. Bendera paritas/paritas disetel ketika hasilnya berjumlah genap.

4. AF - Pembawa Tambahan. Tandai untuk transfer/peminjaman tambahan dari tetrad bawah ke yang lebih tua (dari digit ketiga hingga keempat). Ini digunakan dalam perintah untuk memproses data 8-bit, paling sering angka BCD.

6. ZF - Bendera nol. Bendera nol ditetapkan jika operasi aritmatika atau logika menghasilkan angka yang sama dengan nol (yaitu, semua bit hasilnya adalah 0).

7. SF - Menandatangani bendera. Bendera tanda menduplikasi nilai bit paling signifikan dari hasil. SF=0 untuk positif, SF=1 untuk negatif.

11. OF - Bendera luapan. bendera meluap , atau ) diatur jika, saat melakukan operasi aritmatika dengan tanda, diperoleh angka yang kedalaman bitnya melebihi lebar bit bidang hasil yang dialokasikan untuknya.

Bendera, ditambahkan ke register EF:

12-13. IOPL adalah singkatan dari I/O Privilege Level. Bendera tingkat hak istimewa I/O. Digunakan dalam mode terproteksi mikroprosesor untuk mengontrol akses ke perintah I/O, bergantung pada hak istimewa tugas.

14. NT - Bendera tugas bersarang. Bendera bersarang tugas. Digunakan dalam mode terproteksi mikroprosesor untuk merekam fakta bahwa satu tugas bersarang di dalam tugas lainnya.

16. RF - Bendera Lanjutkan. Lanjutkan bendera. Dalam mode debug, satu nilai RF memungkinkan perintah dimulai ulang setelah interupsi. Digunakan bersama dengan register breakpoint debug.

17. VM - Bendera Mode Virtual. Bendera mode virtual. Tanda operasi mikroprosesor dalam mode virtual 8086. 1 – prosesor beroperasi dalam mode virtual 8086; 0 - Prosesor berjalan dalam mode nyata atau terlindungi.

18. AC - Pemeriksaan Keselarasan. Bendera mode operasi prosesor, di mana kontrol penyelarasan terjadi. Hanya digunakan pada tingkat hak istimewa 3. Jika AC=1 dan AM=1 (AM adalah bit dalam register kontrol CR0), maka jika operan yang diakses tidak selaras dengan batas yang sesuai (2 atau 4 atau 8) byte, pengecualian 17 akan dimunculkan Penyelarasan operan dalam batas 2,4,8 berarti bahwa alamat operan masing-masing adalah kelipatan 2,4,8.

19. VIF - Bendera Interupsi Virtual. Interupsi aktifkan bendera dalam mode prosesor virtual.

20. VIP - Interupsi Virtual Tertunda. Bendera tunda interupsi dalam mode prosesor virtual.

21. ID - Identifikasi CPU. Bendera identifikasi prosesor. Bendera dapat diubah jika prosesor mendukung perintah CPUID.

Dalam register kontrol CR0-CR3 disimpan tanda status prosesor yang umum untuk semua tugas. Daftar CR0 memiliki bit-bit berikut:

0. PE - Perlindungan Diaktifkan. Tanda mode terlindungi. Jika PE=1, maka mode prosesor dilindungi.

1. MP - Hadiah matematika. Tandai kehadiran coprocessor matematika. Jika MP=1, maka math coprocessor ada.

2. EM - Meniru Ekstensi Numerik. Bendera emulasi instruksi floating-point. Saat bendera disetel, perintah untuk bekerja dengan bilangan real dapat ditiru dalam perangkat lunak.

3.TS - Pengalihan Tugas. Tanda pengalihan tugas. Bendera diatur setelah tugas dialihkan.

4. ET - Jenis Ekstensi. Bendera jenis ekstensi. Setel jika koprosesor aritmatika 387 atau lebih tinggi ada.

5. NE - Mengaktifkan Kesalahan Numerik. Bendera resolusi kesalahan koprosesor. Jika bendera disetel, maka jika terjadi kesalahan pada koprosesor, pengecualian 16 dihasilkan.

16.WP - Perlindungan Tulis. Tulis bendera perlindungan. Jika flag disetel, maka kernel sistem operasi diberi halaman memori dalam mode hanya-baca (read-only).

18.AM - Topeng Penyelarasan. Bendera penyelarasan masking. Saat bendera disetel, pengecualian 17 akan dihasilkan jika ada akses ke operan yang tidak selaras.Jika bendera dihapus, pengecualian seperti itu akan ditutup.

29. NW - Tidak Menulis Melalui. Bendera penonaktifan tulis-terusan.

30. CD - Nonaktifkan Cache. Nonaktifkan tanda caching.

31.PG - Aktifkan Paging. Bendera mode paging memori. Saat flag disetel, sistem operasi berjalan dalam mode paging.

Bit register CR0 yang tersisa dicadangkan.

Daftar CR1 dicadangkan. Daftar CR2 menyimpan alamat linier 32-bit tempat kesalahan halaman diterima. 20 MSB CR3 menyimpan alamat basis fisik dari tabel direktori halaman dan bit kontrol cache. Register CR4 berisi bit aktif untuk ekstensi arsitektural MP. Secara umum, register ini digunakan dalam pemrograman sistem dan mengatur mode operasi prosesor (normal, terproteksi, dll.), paging memori, dan sebagainya.

Register alamat sistem. Tabel deskriptor global GDTR dan register penunjuk sistem tabel interupsi IDTR masing-masing menyimpan alamat basis 32-bit dan batas tabel 16-bit. Segmen tugas sistem mendaftarkan TR dan tabel deskriptor lokal LDTR adalah pemilih 16-bit. Mereka sesuai dengan register deskriptor bayangan, yang berisi alamat dasar segmen 32-bit, batas 20-bit, dan byte izin.

Dalam register debug DR0-DR3 berisi alamat breakpoint 32-bit dalam mode debug; DR4-DR5 dicadangkan dan tidak digunakan; DR6 menampilkan status pos pemeriksaan; DR7 - mengelola penempatan titik kontrol dalam program.

Tes register TR adalah bagian dari grup register khusus model, komposisi dan jumlahnya bergantung pada jenis prosesor: MP 386 menggunakan dua register TR6 dan TR7 untuk mengontrol sistem paging alokasi memori oleh sistem operasi. Pentium II ke atas menggunakan dua belas register TR1-TR12. Kelompok register ini juga memuat hasil pengujian MP dan memori cache.

Artikel tersebut mengungkapkan arti dari istilah "64 bit". Artikel tersebut mengulas secara singkat sejarah pengembangan sistem 64-bit, menjelaskan prosesor 64-bit paling umum saat ini dari arsitektur Intel 64 dan sistem operasi Windows 64-bit.

pengantar

Dalam kerangka arsitektur komputer, istilah "64-bit" mengacu pada bilangan bulat 64-bit dan jenis data lain yang berukuran 64 bit. Sistem "64-bit" dapat mengacu pada arsitektur mikroprosesor 64-bit (misalnya EM64T, IA-64) atau sistem operasi 64-bit (misalnya Windows XP Professional x64 Edition). Kita dapat berbicara tentang kompiler yang menghasilkan kode program 64-bit.

Artikel ini akan membahas berbagai masalah yang berkaitan dengan teknologi 64-bit. Artikel ini ditujukan untuk pemrogram yang ingin mulai mengembangkan program 64-bit, dan ditujukan untuk pengembang Windows, karena masalah keakraban dengan sistem 64-bit adalah yang paling relevan bagi mereka.

Sejarah sistem 64-bit

64-bit baru saja memasuki kehidupan sebagian besar pengguna dan pemrogram aplikasi. Namun, bekerja dengan data 64-bit memiliki sejarah panjang.

1961: IBM merilis superkomputer IBM 7030 Stretch, yang menggunakan kata-kata data 64-bit, instruksi mesin 32-bit atau 64-bit.

1974: Control Data Corporation meluncurkan superkomputer vektor CDC Star-100, yang menggunakan arsitektur kata 64-bit (sistem CDC sebelumnya memiliki arsitektur 60-bit).

1976: Cray Research merilis superkomputer Cray-1 pertama, yang mengimplementasikan arsitektur kata 64-bit dan akan berfungsi sebagai dasar untuk semua superkomputer vektor Cray selanjutnya.

1985: Cray merilis UNICOS, implementasi 64-bit pertama dari sistem operasi Unix.

1991: MIPS Technologies merilis prosesor 64-bit pertama, R4000, yang mengimplementasikan iterasi ketiga dari arsitektur MIPS perusahaan mereka. Prosesor ini telah digunakan di workstation grafis SGI sejak model IRIS Crimson. Kendall Square Research merilis superkomputer KSR1 pertamanya yang dibangun di atas arsitektur RISC 64-bit milik mereka yang menjalankan OSF/1.

1992: Digital Equipment Corporation (DEC) memperkenalkan arsitektur Alpha 64-bit semua, gagasan dari proyek PRISM.

1993: DEC merilis sistem operasi DEC OSF/1 AXP mirip Unix 64-bit (kemudian berganti nama menjadi Tru64 UNIX) untuk sistem Alpha-nya.

1994: Intel mengumumkan rencananya untuk mengembangkan arsitektur 64-bit IA-64 (dengan Hewlett-Packard) sebagai penerus prosesor 32-bit IA-32 mereka. Tanggal rilis ditetapkan untuk 1998-1999. SGI merilis IRIX 6.0 dengan dukungan 64-bit untuk chipset R8000.

1995: Sun meluncurkan keluarga prosesor SPARC UltraSPARC 64-bit. HAL Computer Systems, anak perusahaan Fujitsu, meluncurkan workstation berdasarkan prosesor SPARC64 64-bit generasi pertama yang dikembangkan secara independen oleh HAL. IBM merilis mikroprosesor A10 dan A30, serta prosesor PowerPC AS 64-bit. IBM juga merilis update 64-bit untuk AS/400 yang dapat mengubah sistem operasi, database, dan aplikasi.

1996: Nintendo memperkenalkan konsol game Nintendo 64, berdasarkan varian MIPS R4000 yang lebih murah. HP merilis implementasi 64-bit 2.0 dari arsitektur PA-RISC PA-8000 miliknya.

1997: IBM meluncurkan jajaran prosesor PowerPC/PowerPC AS 64-bit RS64.

1998: Sun merilis Solaris 7 dengan dukungan UltraSPARC 64-bit penuh.

1999: Intel merilis set instruksi untuk arsitektur IA-64. AMD secara publik mengumumkan rangkaian ekstensi 64-bit untuk IA-32, yang diberi nama x86-64 (kemudian berganti nama menjadi AMD64).

2000: IBM merilis mainframe zSeries z900 64-bit pertama yang kompatibel dengan ESA/390, serta sistem operasi z/OS yang baru.

2001: Intel akhirnya meluncurkan rangkaian prosesor 64-bit, sekarang disebut Itanium, untuk server berkinerja tinggi. Proyek ini jauh dari harapan karena banyak penundaan dalam membawa IA-64 ke pasar. NetBSD menjadi sistem operasi pertama yang berjalan pada prosesor Intel Itanium setelah dirilis. Selain itu, Microsoft juga merilis Windows XP 64-Bit Edition untuk arsitektur IA-64 dari keluarga Itanium, meskipun tetap memiliki kemampuan untuk menjalankan aplikasi 32-bit menggunakan lapisan WoW64.

2003: AMD memperkenalkan jajaran prosesor Opteron dan Athlon 64 berdasarkan arsitektur AMD64, yang merupakan arsitektur prosesor 64-bit pertama berdasarkan arsitektur x86. Apple mulai menggunakan prosesor PowerPC 970 "G5" 64-bit IBM. Intel mengklaim bahwa keluarga chip prosesor Itanium akan tetap menjadi satu-satunya prosesor 64-bit yang dikembangkan oleh perusahaan mereka.

2004: Menanggapi kesuksesan komersial AMD, Intel mengakui bahwa mereka sedang mengembangkan klon dari ekstensi AMD64, yang mereka beri nama IA-32e (kemudian berganti nama menjadi EM64T, dan sekali lagi Intel 64). Intel juga merilis versi terbaru Keluarga prosesor Xeon dan Pentium 4 dengan dukungan untuk perintah baru.

2004: VIA Technologies memperkenalkan prosesor Yesaya 64-bit.

2005: 31 Januari Sun merilis Solaris 10 dengan dukungan untuk prosesor AMD64/Intel 64. 30 April Microsoft merilis Windows XP Professional x64 Edition untuk prosesor AMD64/Intel 64.

2006: Sony, IBM, dan Toshiba meluncurkan prosesor Cell 64-bit untuk PlayStation 3, server, workstation, dan perangkat lainnya. Microsoft merilis Windows Vista dengan versi 64-bit yang disertakan untuk prosesor AMD64/Intel 64 yang mendukung kompatibilitas 32-bit. Semua aplikasi dan komponen Windows adalah 64-bit, tetapi banyak di antaranya memiliki versi 32-bit yang disertakan sebagai plug-in untuk kompatibilitas.

2009: Seperti Windows Vista, Microsoft Windows 7 menyertakan versi 64-bit lengkap untuk prosesor AMD64/Intel 64, dan sebagian besar komputer baru hadir dengan versi 64-bit secara default. Sistem operasi perusahaan dirilis Apple Mac OS X 10.6, "Snow Leopard" yang memiliki kernel 64-bit dan dirancang untuk prosesor AMD64 / Intel 64, namun sistem ini diinstal secara default hanya pada beberapa model terbaru komputer Apple. Sebagian besar aplikasi dikirimkan dengan Mac OS X 10.6 sekarang juga 64-bit.

Untuk detail lebih lanjut tentang sejarah pengembangan 64-bit, lihat artikel John Masha "The Long Road to 64-bit" dan artikel ensiklopedis Wikipedia "64-bit".

Pemrograman aplikasi dan sistem 64-bit

Pada saat penulisan ini pada tahun 2010, yang paling terkenal dan tersebar luas adalah dua arsitektur mikroprosesor 64-bit: IA64 dan Intel 64.
  1. IA-64 Arsitektur mikroprosesor 64-bit dikembangkan bersama oleh Intel dan Hewlett Packard. Diimplementasikan dalam mikroprosesor Itanium dan Itanium 2. Untuk kenalan yang lebih detail dengan arsitektur IA-64, Anda dapat merujuk ke artikel Wikipedia berikut: "IA-64", "Itanium", "Itanium 2". Arsitektur Itanium didukung sejumlah besar produsen server: Bull, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, NEC, SGI dan Unisys. Vendor ini telah bergabung dengan Intel dan sejumlah pengembang perangkat lunak untuk membentuk Aliansi Solusi Itanium guna memajukan arsitektur dan mempercepat laju porting perangkat lunak.
  2. Intel 64(AMD64 / x86-64 / x64 / EM64T) - arsitektur ini merupakan perpanjangan dari arsitektur x86 dengan kompatibilitas penuh ke belakang. Ada banyak varian nama arsitektur ini, yang menimbulkan kebingungan, meskipun sebenarnya semua nama ini memiliki arti yang sama: x86-64, AA-64, Arsitektur Hammer, AMD64, Teknologi Yamhill, EM64T, IA-32e , Intel64, x64. Untuk mempelajari lebih lanjut tentang berapa banyak nama yang muncul, lihat artikel Wikipedia: "X86-64". Prosesor dengan arsitektur Intel 64 banyak digunakan di komputer pribadi. Dan kemungkinan besar komputer Anda dilengkapi dengan prosesor dengan arsitektur ini.
Penting untuk dipahami bahwa IA-64 dan Intel 64 (AMD64) adalah arsitektur mikroprosesor yang sama sekali berbeda dan tidak kompatibel. Selanjutnya dalam artikel ini, kami hanya akan mempertimbangkan arsitektur Intel 64 (x64 / AMD64), karena lebih populer di kalangan pengembang aplikasi. perangkat lunak untuk sistem operasi Windows. Singkatnya, model pemrograman Intel 64 yang tersedia untuk programmer pada sistem Windows 64-bit disebut Win64.

Arsitektur Intel 64 (AMD64)

Arsitektur Intel 64 yang sedang dipertimbangkan adalah ekstensi kompatibel mundur yang sederhana namun kuat dari arsitektur x86 industri lama. Itu menambahkan ruang alamat 64-bit dan memperluas sumber daya register untuk mendukung kinerja yang lebih baik dari program 64-bit yang dikompilasi ulang. Arsitektur menyediakan dukungan untuk kode aplikasi dan sistem operasi 16-bit dan 32-bit lama tanpa modifikasi atau kompilasi ulang.

Fitur khas Intel 64 adalah dukungan untuk enam belas register tujuan umum 64-bit (x86-32 memiliki delapan register 32-bit). Aritmatika 64-bit dan operasi logis atas bilangan bulat. Alamat virtual 64-bit didukung. Untuk menangani register baru untuk perintah, "prefiks ekstensi register" telah diperkenalkan, di mana kisaran kode 40h-4Fh telah dipilih, digunakan untuk perintah INC<регистр>dan Desember<регистр>dalam mode 32- dan 16-bit. Perintah INC dan DEC dalam mode 64-bit harus dikodekan dalam bentuk dua byte yang lebih umum.

Register:

16 register tujuan umum integer 64-bit (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15),
8 register titik mengambang 80-bit (ST0 - ST7),
8 register Ekstensi Multimedia 64-bit (MM0 - MM7, berbagi ruang dengan register ST0 - ST7),
16 register SSE 128-bit (XMM0 - XMM15),
Penunjuk RIP 64-bit dan register bendera RFLAGS 64-bit.

Kebutuhan arsitektur 64-bit ditentukan oleh aplikasi yang membutuhkan ruang alamat yang besar. Pertama-tama, ini adalah server berkinerja tinggi, sistem manajemen basis data, sistem CAD, dan, tentu saja, game. Aplikasi semacam itu akan sangat diuntungkan dari ruang alamat 64-bit dan lebih banyak register. Rendahnya jumlah register yang tersedia di arsitektur x86 lama membatasi kinerja dalam tugas komputasi. Peningkatan jumlah register memberikan kinerja yang cukup untuk banyak aplikasi.

Kami menekankan keunggulan utama arsitektur x86-64:

  • ruang alamat 64-bit;
  • set register yang diperluas;
  • satu set perintah yang akrab bagi pengembang;
  • kemampuan untuk menjalankan aplikasi 32-bit lama pada sistem operasi 64-bit;
  • kemampuan untuk menggunakan sistem operasi 32-bit.

sistem operasi 64-bit

Hampir semua sistem operasi modern kini memiliki versi untuk arsitektur Intel 64. Misalnya, Microsoft menyediakan Windows XP x64. Pengembang Utama sistem UNIX juga menyediakan versi 64-bit, seperti Linux Debian 3.5 x86-64. Namun, ini tidak berarti bahwa seluruh kode dari sistem semacam itu sepenuhnya 64-bit. Bagian dari kode OS dan banyak aplikasi mungkin tetap 32-bit, karena Intel 64 menyediakan kompatibilitas mundur dengan aplikasi 32-bit. Misalnya, 64-bit Versi Windows menggunakan mode khusus WoW64 (Windows-on-Windows 64), yang menerjemahkan panggilan dari aplikasi 32-bit ke sumber daya sistem operasi 64-bit.

WoW64

Windows-on-Windows 64-bit (WoW64) adalah subsistem dari sistem operasi Windows yang memungkinkan Anda menjalankan aplikasi 32-bit di semua versi Windows 64-bit.

Subsistem WoW64 tidak mendukung program berikut:

  • program yang dikompilasi untuk sistem operasi 16-bit;
  • program mode kernel dikompilasi untuk sistem operasi 32-bit.
Ada perbedaan WoW64 tergantung pada arsitektur prosesor. Misalnya, Windows versi 64-bit yang dirancang untuk prosesor Intel Itanium 2 menggunakan WoW64 untuk meniru instruksi x86. Emulasi ini sangat intensif sumber daya dibandingkan dengan WoW64 untuk arsitektur Intel 64, karena beralih dari mode 64-bit ke mode kompatibilitas saat menjalankan program 32-bit.

WoW64 pada arsitektur Intel 64 (AMD64/x64) tidak memerlukan emulasi instruksi. Di sini, subsistem WoW64 hanya mengemulasi lingkungan 32-bit, karena lapisan tambahan antara aplikasi 32-bit dan Windows API 64-bit. Di suatu tempat lapisan ini tipis, di suatu tempat tidak begitu banyak. Untuk program sekunder kerugian kinerja karena adanya lapisan seperti itu akan menjadi sekitar 2%. Untuk beberapa program, nilai ini mungkin lebih tinggi. Dua persen tidak banyak, tetapi perlu diingat bahwa aplikasi 32-bit berjalan sedikit lebih lambat di bawah sistem operasi Windows 64-bit daripada di lingkungan 32-bit.

Mengompilasi kode 64-bit tidak hanya meniadakan kebutuhan akan WoW64, tetapi juga memberikan peningkatan kinerja tambahan. Hal ini disebabkan perubahan arsitektur mikroprosesor, seperti peningkatan jumlah register tujuan umum. Untuk program rata-rata, Anda dapat mengharapkan peningkatan kinerja antara 5-15% dari kompilasi ulang sederhana.

Karena adanya lapisan WoW64, program 32-bit bekerja kurang efisien di lingkungan 64-bit daripada di lingkungan 32-bit. Namun, aplikasi 32-bit sederhana dapat memperoleh manfaat dari menjalankannya di lingkungan 64-bit. Anda mungkin tahu bahwa program yang dikompilasi dengan switch /LARGEADDRESSAWARE:YES dapat mengalokasikan hingga 3 gigabytes memori jika sistem operasi Windows 32-bit dimulai dengan switch /3gb. Jadi, program 32-bit yang sama yang berjalan pada sistem 64-bit dapat mengalokasikan hampir 4 GB memori (dalam praktiknya, sekitar 3,5 GB).

Subsistem WoW64 mengisolasi program 32-bit dari program 64-bit dengan mengalihkan akses file dan registri. Ini mencegah program 32-bit mengakses data aplikasi 64-bit secara tidak sengaja. Misalnya, aplikasi 32-bit yang menjalankan file DLL dari direktori %systemroot%\System32 mungkin secara tidak sengaja mengakses file DLL 64-bit yang tidak kompatibel dengan program 32-bit. Untuk menghindari hal ini, subsistem WoW64 mengalihkan akses dari folder %systemroot%\System32 ke folder %systemroot%\SysWOW64. Pengalihan ini membantu mencegah kesalahan kompatibilitas karena memerlukan file DLL yang dirancang khusus untuk bekerja dengan aplikasi 32-bit.

Pelajari lebih lanjut tentang mekanisme pengalihan berkas sistem dan registri dapat ditemukan di bagian MSDN "Menjalankan Aplikasi 32-bit".

Model pemrograman Win64

Sama seperti di Win32, ukuran halaman di Win64 adalah 4Kb. 64K pertama dari ruang alamat tidak pernah dipetakan, jadi alamat terkecil yang valid adalah 0x10000. Tidak seperti Win32, DLL sistem dimuat di atas 4GB.

Keunikan kompiler untuk Intel 64 adalah bahwa mereka dapat menggunakan register secara paling efektif untuk meneruskan parameter ke fungsi, alih-alih menggunakan tumpukan. Ini memungkinkan pengembang arsitektur Win64 untuk menyingkirkan yang namanya konvensi pemanggilan (konvensi pemanggilan). Di Win32, Anda dapat menggunakan konvensi yang berbeda: __stdcall, __cdecl, __fastcall, dan seterusnya. Hanya ada satu konvensi pemanggilan di Win64. Pertimbangkan contoh bagaimana empat argumen tipe integer dilewatkan dalam register:

  • RCX: argumen pertama
  • RDX: argumen kedua
  • R8: argumen ketiga
  • R9: argumen keempat
Argumen setelah empat bilangan bulat pertama diteruskan ke tumpukan. Untuk argumen float, register XMM0-XMM3 digunakan, begitu juga dengan stack.

Perbedaan dalam konvensi pemanggilan berarti kode 64-bit dan 32-bit tidak dapat digunakan dalam program yang sama. Dengan kata lain, jika aplikasi dikompilasi untuk mode 64-bit, maka semua pustaka (DLL) yang digunakan juga harus 64-bit.

Melewati parameter melalui register adalah salah satu inovasi yang membuat program 64-bit lebih berkinerja daripada program 32-bit. Keuntungan kinerja tambahan dapat diperoleh dengan menggunakan tipe data 64-bit.

Ruang alamat

Sementara prosesor 64-bit secara teoritis dapat mengatasi 16 exabytes memori (2^64), Win64 saat ini mendukung 16 terabyte (2^44). Ada beberapa alasan untuk ini. Prosesor saat ini hanya dapat mengakses 1 terabyte (2^40) memori fisik. Arsitekturnya (tetapi bukan perangkat kerasnya) dapat memperluas ruang ini hingga 4 petabyte (2^52). Namun, dalam kasus ini, sejumlah besar memori diperlukan untuk tabel halaman yang dipetakan memori.

Selain keterbatasan tersebut, jumlah memori yang tersedia dalam versi tertentu dari sistem operasi Windows 64-bit juga bergantung pada pertimbangan komersial Microsoft. Berikut informasi jumlah memori yang didukung oleh berbagai versi Windows versi 64-bit:

Windows XP Professional - 128 GByte;
Windows Server 2003, Standar - 32 Gbyte;
Windows Server 2003, Perusahaan - 1 Tbyte;
Windows Server 2003, Pusat Data - 1 Tbyte;
Windows Server 2008, Pusat Data - 2 Tbyte;
Windows Server 2008, Perusahaan - 2 Tbyte;
Windows Server 2008, Standar - 32 Gbyte;
Windows Server 2008, Server Web - 32 GByte;
Vista Home Basic - 8 Gbyte;
Vista Home Premium - 16 GB;
Bisnis Vista - 128 GB;
Vista Perusahaan - 128 GB;
Vista Ultimate - 128 GB;
Windows 7 Home Basic - 8 GByte;
Windows 7 Home Premium - 16 GB;
Windows 7 Profesional - 192 GB;
Windows 7 Perusahaan - 192 GB;
Windows 7 Ultimate - 192 GB;

Pengembangan aplikasi 64-bit

Masalah pengembangan aplikasi 64-bit paling banyak dibahas dalam kursus "

Pada tahun 1985 perusahaan Intel merilis mikroprosesor 32-bit, yang menjadi nenek moyang keluarga IA-32. Pengembangan keluarga ini telah melalui beberapa tahapan, di antaranya dapat dibedakan sebagai berikut: penerapan blok untuk memproses angka floating-point langsung pada chip MP (mikroprosesor I486), pengantar MMX-teknologi pemrosesan data fixed-point sesuai dengan prinsip SIMD - instruksi tunggal multi data(satu aliran instruksi - banyak aliran data) di mikroprosesor Pentium MMX dan pengembangan teknologi ini pada bilangan floating point ( SSE - Ekstensi SIMD streaming), yang muncul pertama kali di MP Pentium III. Namun, fitur utama arsitektur ini tetap tidak berubah hingga saat ini.

Arsitektur mikroprosesor 32-bit berbeda secara signifikan dari mikroprosesor 16-bit. Beberapa perbedaan ini murni kuantitatif, sementara yang lain mendasar.

Perbedaan eksternal utama adalah peningkatan lebar bus data dan bus alamat menjadi 32 bit. Ini, pada gilirannya, dikaitkan dengan perubahan kedalaman bit elemen internal mikroprosesor dan dalam mekanisme untuk menjalankan beberapa proses, misalnya, pembentukan alamat fisik.

Register unit pemrosesan titik tetap menjadi 32-bit. Masing-masing dapat diakses sebagai satu kata ganda (32 bit). 16 bit yang lebih rendah dari register ini dapat diakses dengan cara yang sama seperti pada mikroprosesor 16-bit.

Perubahan kuantitatif dan kualitatif terjadi di blok register segmen. Selain empat register yang digunakan dalam mode real, CS, DS, SS, dan ES, dua lagi telah ditambahkan: FS dan GS. Meskipun kedalaman bit register blok ini tetap sama (masing-masing 16 bit), mereka digunakan secara berbeda dalam pembentukan alamat fisik RAM. Ketika mikroprosesor beroperasi dalam apa yang disebut mode terlindungi, mereka dimaksudkan untuk mencari deskriptor segmen (deskriptor) di tabel sistem yang sesuai, dan alamat dasar serta atribut segmen sudah disimpan di deskriptor. Pembuatan alamat dalam hal ini dilakukan oleh blok segmentasi pengelola memori.

Jika, selain segmen, memori juga dibagi menjadi beberapa halaman, maka perhitungan akhir alamat fisik dilakukan oleh blok kontrol halaman.

Dimulai dengan mikroprosesor I486, chip mikroprosesor menyertakan unit pemrosesan angka floating point, yang mencakup delapan register 80-bit untuk mewakili tanda, mantisa, dan eksponen dari angka tersebut.

Chip mikroprosesor juga memiliki memori cache internal, yang merupakan memori buffer berkecepatan tinggi yang dirancang khusus untuk menyimpan informasi yang paling sering digunakan (perintah dan data). Dalam berbagai model mikroprosesor, jumlah memori cache berkisar antara 8 KB hingga 512 KB.

Mikroprosesor pada tingkat perangkat keras mendukung mode multiprogramming komputer, yaitu kemampuan untuk memiliki beberapa program di memori yang siap dieksekusi pada saat yang sama, yang diluncurkan oleh sistem operasi sesuai dengan algoritme fungsinya atau tergantung pada situasi khusus yang berkembang dalam pengoperasian perangkat eksternal.

Terkait erat dengan kemampuan ini adalah perlindungan memori, yang memberikan kontrol atas interaksi yang tidak sah antara program individu. Ini termasuk perlindungan manajemen memori dan perlindungan hak istimewa.

Fitur utama dari format perintah yang diperluas adalah kemampuan untuk menggunakan salah satu register tujuan umum di salah satu mode pengalamatan, serta penambahan satu mode pengalamatan lagi - indeks basis relatif dengan penskalaan. Dalam hal ini, alamat efektif dibentuk sebagai berikut:

EA = (dasar) + (indeks) skala + disp,

di mana (base) adalah nilai dari base register; (indeks) - nilai register indeks; skala - nilai faktor skala (skala = 1,2,3,4); disp adalah nilai offset yang dikodekan dalam perintah itu sendiri.

Perhatikan bahwa pada arsitektur 32-bit, alamat efektif biasanya disebut sebagai offset, sementara membedakannya dari offset yang disandikan dalam instruksi itu sendiri (displacement).

Arsitektur bit PC.

Kode Win64 menggabungkan fitur inti dari kode 32-bit, dan juga menyertakan perubahan peningkatan bit. Pemrogram memiliki:

· 64-bit pointer;

· Tipe data 64-bit;

· Tipe data 32-bit;

Antarmuka API Win64.

Perhatikan bahwa tipe data 32-bit tidak hilang saat platform meningkat dalam bitness (seperti yang terjadi pada tipe data 16-bit saat pindah ke Win32). Ini karena bahkan dalam aplikasi 64-bit, dalam banyak kasus, variabel tidak memerlukan memori 8 byte, jadi menggunakan tipe 64-bit dalam kasus seperti itu akan sangat tidak efisien. sistem operasi Saya harus menambahkan nol ke bit tinggi untuk meningkatkan ukuran data menjadi 8 byte (data seperti itu juga sangat tidak nyaman untuk dibaca). Hal ini akan menyebabkan penurunan kinerja.

Nasib berbeda menimpa pointer 32-bit: mereka benar-benar menghilang. Faktanya adalah bahwa penggunaan pointer 32-bit membatasi jumlah memori yang dapat dialamatkan. Misalnya, salah satu keunggulan utama model memori datar (yang merupakan yang utama untuk memprogram aplikasi 32-bit untuk platform NT) menggunakan pointer 32-bit adalah kemampuan untuk membuat segmen hingga ukuran 4 GB. Pointer 64-bit yang baru menyediakan kemampuan untuk menangani memori hingga 16 TB (1 TB = 1012 MB). Volume ini cukup diminati oleh aplikasi bisnis modern.

Fungsi di API Win64 telah mengalami sedikit perubahan. Hanya beberapa nama yang telah diubah untuk mencerminkan platform 64-bit. Dalam banyak kasus, hanya tipe parameter yang merupakan argumen untuk pemanggilan fungsi yang telah berubah. Semua manfaat lainnya (kemampuan untuk berhenti menggunakan file paging, dll.) dikaitkan dengan peningkatan jumlah pengalamatan, atau dengan tipe data baru.

Desain papan sistem. Faktor bentuk

Desain motherboard komputer

Papan Utama(motherboard bahasa Inggris, MB, nama mainboard bahasa Inggris juga digunakan - papan utama; slang. mom, mother, motherboard) adalah papan sirkuit tercetak multilayer yang kompleks tempat komponen utama dipasang komputer pribadi(prosesor pusat, pengontrol RAM dan RAM yang sesuai, boot ROM, pengontrol untuk antarmuka I/O dasar). Biasanya, motherboard berisi konektor (slot) untuk menghubungkan pengontrol tambahan, yang biasanya digunakan bus USB, PCI, dan PCI-Express.

CPU

Kumpulan logika sistem (eng. Chipset) - satu set chip yang menghubungkan CPU ke RAM dan pengontrol perangkat periferal. Biasanya, rangkaian logika sistem modern dibangun berdasarkan dua VLSI: "jembatan utara" dan "jembatan selatan".

jembatan utara(English Northbridge), MCH (Memory controller hub), pengontrol sistem - menyediakan koneksi CPU ke node menggunakan bus berperforma tinggi: RAM, pengontrol grafis.

FSB seperti Hyper-Transport dan SCI dapat digunakan untuk menghubungkan CPU ke pengontrol sistem.

Biasanya RAM terhubung ke pengontrol sistem. Dalam hal ini, ini berisi pengontrol memori. Dengan demikian, jenis pengontrol sistem yang digunakan biasanya bergantung pada volume maksimum RAM, serta bandwidth bus memori komputer pribadi. Tetapi tren saat ini adalah membangun pengontrol RAM langsung ke CPU (misalnya, pengontrol memori dibangun ke dalam prosesor di AMD K8 dan Intel Core i7), yang menyederhanakan fungsi pengontrol sistem dan mengurangi panas yang dihasilkan.

PCI Express digunakan sebagai bus untuk menghubungkan pengontrol grafis pada motherboard modern. Bus bersama sebelumnya (ISA, VLB, PCI) dan bus AGP digunakan.

jembatan selatan(eng. Southbridge), ICH (hub pengontrol I / O), pengontrol periferal - berisi pengontrol perangkat periferal ( perangkat keras, Ethernet, audio), pengontrol bus untuk menghubungkan periferal ( bus PCI, PCI-Express dan USB), serta pengontrol bus yang menghubungkan perangkat yang tidak memerlukan bandwidth tinggi (LPC - digunakan untuk menghubungkan ROM boot; bus LPC juga digunakan untuk menghubungkan multikontroler (Bahasa Inggris Super I / O ) - sirkuit mikro, memberikan dukungan untuk antarmuka transfer data berkinerja rendah yang "usang": antarmuka serial dan paralel, pengontrol keyboard dan mouse).

Biasanya, jembatan utara dan selatan diimplementasikan sebagai VLSI terpisah, tetapi ada juga solusi chip tunggal. Kumpulan logika sistemlah yang menentukan segalanya fitur utama motherboard dan perangkat apa yang dapat terhubung dengannya.

Memori akses acak (juga memori akses acak, RAM) - dalam ilmu komputer - memori, bagian dari sistem memori komputer, yang dapat diakses oleh prosesor dalam satu operasi (melompat, bergerak, dll.). Ini dimaksudkan untuk penyimpanan sementara data dan perintah yang diperlukan prosesor untuk melakukan operasi. RAM mentransfer data ke prosesor secara langsung, atau melalui memori cache. Setiap sel RAM memiliki alamat masing-masing.

RAM dapat diproduksi sebagai unit terpisah atau disertakan dalam desain komputer chip tunggal atau mikrokontroler.

Boot ROM - menyimpan perangkat lunak yang dijalankan segera setelah daya dihidupkan. Biasanya, boot ROM berisi BIOS, tetapi juga dapat berisi perangkat lunak yang berjalan di dalam EFI.

Fitur arsitektur 64-bit MP


5.1. Itanium 2 Intel

Prosesor dikembangkan dari awal, dan, secara paralel, dalam dua versi sekaligus: oleh para insinyur dari Intel dan Hewlett-Packard. Namun, kedua chip tersebut secara alami didasarkan pada ide yang sama, karena keduanya dibuat bersama, dan keduanya seharusnya menjadi pendiri keluarga yang sama. Komposisi penyemenan, tentu saja, satu ideologi yang menggantikan CISC - EPIC (Explicitly Parallel Instruction Computing), dan arsitektur baru - IA-64, yang mencakup sekumpulan instruksi, deskripsi register, dan hal serupa lainnya. Namun, arsitektur hanyalah hal yang dapat diubah, cukup mengingat bagaimana prosesor CISC seperti 8086 dan i80486 berbeda satu sama lain, keduanya dibuat berdasarkan 80x86.
Demikian pula dengan Merced dan McKinley, Itanium dan Itanium 2 - keduanya dibangun atas dasar ideologi yang sama, tetapi dalam jenis arsitektur yang berbeda. Pada suatu waktu, cerita yang sama pada umumnya terjadi pada Pentium dan Pentium Pro. Namun, mereka memiliki fitur umum, dan ini juga memilikinya, EPIC "bertanggung jawab" untuk ini. Pertama-tama, kita berbicara tentang skala besar skala besar penuh, yaitu kemampuan untuk mengeksekusi beberapa instruksi secara bersamaan. Untuk apa, tentu saja, prosesor berisi modul eksekutif - untuk operasi dengan bilangan bulat, dengan angka floating point, dll.
Tidak seperti Pentium dan penerusnya, yang mengetahui kodenya sendiri, prosesor EPIC sangat bergantung pada kompiler, yang harus menganalisis kode itu sendiri untuk menemukan tempat optimal untuk memparalelkan eksekusinya, dan memberikan informasi ini kepada prosesor. Oleh karena itu, "secara eksplisit" digunakan - prosesor tidak boleh mencoba memahami apa yang dapat dieksekusi secara paralel dan apa yang tidak, dll. - kompiler akan menjelaskan semua ini kepadanya sebelumnya. Plus, mekanisme yang kuat untuk prediksi cabang, pra-eksekusi potongan kode, pra-pemuatan data, dan sejenisnya - pemuatan unit eksekusi harus didistribusikan secara merata.
Masalah dengan register telah diselesaikan secara radikal, yang jumlahnya telah ditingkatkan beberapa kali: untuk Itanium, jumlahnya 128 untuk keperluan umum (Gbr. 1), 128 untuk menyimpan angka floating-point, 8 register transisi, dan 64 register yang bertanggung jawab untuk ra -bot mekanisme prediksi. Semuanya jelas di sini - sejumlah register, dan bahkan yang benar-benar 64-bit, akan cukup untuk menyimpan nomor yang diperlukan untuk sejumlah modul eksekutif yang masuk akal. Itanium, perwakilan pertama dari keluarga, hanya memiliki lima register seperti itu - dua bilangan bulat, dua untuk operasi memori dan empat untuk operasi floating point. Memori fisik dialamatkan dengan angka 44-bit, yang sebenarnya membatasi ukurannya menjadi "hanya" 17,6 Terabyte, blok floating point bekerja dengan angka dalam representasi 82-bit.

Intel meninggalkan ide untuk mengimplementasikan inti 32-bit 80x86 dalam bentuk perangkat keras, mengingat penggunaan area mati terlalu tidak efisien. Jadi untuk dapat mengeksekusi kode Itanium 80x86, dibuatlah sistem terjemahan yang mengubah kode 80x86 menjadi IA-64 dengan cepat.
Jelas, jika hal lain dianggap sama, kinerja solusi semacam itu akan lebih rendah daripada x86 murni yang berjalan pada frekuensi yang sama. Namun, tidak ada yang mengharapkan eksekusi program x86 berkecepatan tinggi dari Itanium - dukungan untuk arsitektur ini lebih merupakan biaya periode transisi. Namun demikian, faktanya tetap bahwa keluarga ini tidak cocok untuk menyelesaikan masalah 32-bit. Namun, hampir tidak ada orang yang akan menggunakan Itanium untuk tujuan seperti itu di hadapan perangkat lunak 64-bit yang lengkap.
Selain itu, Itanium sendiri merupakan proyek percontohan, seperti halnya Pentium Pro, sehingga prosesor umumnya harus dilihat lebih sebagai demonstrasi kemampuan arsitektur. Sentuhan khas - chipset untuk Itanium, 460GX, hanya mendukung SDRAM PC100 sebagai memori, yang menjelaskan tentang kecepatan prosesor mencerna data. Di sisi lain, bagaimanapun, sampai batas tertentu tidak terlalu cepat berinteraksi dengan RAM dikompensasi oleh cache L3 yang sangat besar - 2 atau 4 MB, berjalan pada frekuensi prosesor penuh (733 atau 800 MHz) dengan throughput hingga 12,8 GB / s.
Tugas lain Itanium adalah menyelesaikan masalah dengan kompiler - lagipula, prosesor EPIC, seperti yang telah disebutkan, sangat bergantung padanya. Tidak seperti kompiler untuk prosesor 80x86, yang hampir tidak berpengaruh pada kinerjanya, di sini kompiler adalah mitra penuh prosesor - lagipula, mereka menyediakannya dengan informasi yang sangat diperlukan untuk bekerja, dan seberapa tinggi kualitasnya, akan bergantung aktif - gantung kecepatan eksekusi program ini oleh prosesor.
Itanium 2 sudah menjadi produk yang jauh lebih menarik secara komersial. Dibuat oleh Hewlett-Packard, yang berhasil membuat prosesor 64-bit dari seri PA-RISC, chip tersebut ternyata jauh lebih canggih. Dengan jumlah L3 yang sedikit lebih kecil (1,5 atau 3 MB) dan frekuensi yang sedikit lebih tinggi, 900 MHz atau 1 GHz, ini memberikan kinerja satu setengah hingga dua kali lebih cepat pada tugas yang sama seperti Itanium. Faktanya, dia adalah perwakilan pertama dari arsitektur IA-64.
Selanjutnya, paralelisasi yang lebih besar direncanakan dengan cara yang paling modis untuk saat ini: prosesor harus beralih ke dua inti fisik, yang hampir menggandakan kinerja dengan harga yang cukup masuk akal - setidaknya, hasilnya akan jauh lebih murah daripada jika jumlah modul eksekutif, register, dll. yang sama, coba capai pada satu chip.

5.2. Athlon 64 AMD

Pertama-tama, kami mencatat bahwa prosesor Athlon 64 adalah prosesor desktop 64-bit yang awalnya direncanakan untuk dirilis oleh AMD. Selanjutnya, mengingat rilis prosesor Pentium 4 berkecepatan tinggi, kemunculan bus 800 MHz dan teknologi Hyper-Threading di dalamnya, AMD segera memutuskan untuk menargetkan Opteron prosesor tunggal ke pasar desktop, memberinya nama Athlon 64 FX. Namun, Athlon 64 FX, karena asal servernya, ternyata mahal dan tidak banyak digunakan. Athlon 64-lah yang harus benar-benar mempromosikan arsitektur AMD64 untuk penggunaan massal.
Di bawah ini adalah Tabel 1 dengan spesifikasi untuk MP 64-bit Athlon 64 3200+, Athlon 65 FX-51, dan Athlon XP 3200+:

Tabel 1

* Perhatikan bahwa memori di Athlon 64 dan Athlon 64 FX memiliki clock relatif terhadap core clock, sehingga clock memori sebenarnya dalam hal ini adalah 129,4, 157,1, dan 200 MHz.
Faktanya, Athlon 64 berbeda dari rekan lamanya Athlon 64 FX, selain bentuk dan dimensi casing, hanya di pengontrol memori. Padahal, pada saat yang sama, kedua prosesor tersebut terbuat dari kristal yang sama. Pengontrol memori di Athlon 64 adalah saluran tunggal, dan ini adalah kelemahan dan kelebihannya dibandingkan dengan Athlon 64 FX. Kelemahan dari pengontrol memori saluran tunggal di Athlon 64 sudah jelas: ini adalah bandwidth teoretis yang lebih rendah.
Mengingat Athlon 64 mampu bekerja dengan memori DDR400, bandwidth maksimum pengontrol memori yang terpasang di CPU adalah 3,2 GB per detik. Ini dua kali lebih kecil dari karakteristik serupa dari Athlon 64 FX. Keuntungan dari pengontrol memori Athlon 64 adalah, tidak seperti pengontrol Athlon 64 FX, pengontrol ini mendukung modul memori konvensional yang tidak terdaftar. Modul semacam itu lebih murah dibandingkan dengan modul register, memiliki pengaturan waktu yang lebih agresif dan bekerja lebih cepat, bahkan dengan pengaturan yang sama dengan modul register. Artinya, dengan bandwidth yang lebih rendah yang disediakan oleh pengontrol memori Athlon 64, subsistem memori yang menggunakannya memiliki latensi yang lebih rendah, yang akan kami tunjukkan di bawah.
AMD Athlon 64 penampilan mirip dengan Opteron dan Athlon 64 FX.
Perbedaan hanya ditemukan pada pelabelan dan lebih sedikit pin di sisi sebaliknya, karena prosesor Athlon 64 dipasang di motherboard dengan Socket 754 dan tidak kompatibel dengan papan Socket 940 yang dirancang untuk keluarga CPU Athlon 64 FX dan Opteron.
Selain fitur yang disebutkan di atas, prosesor Athlon 64 baru memiliki satu lagi. Prosesor ini memiliki dukungan untuk teknologi Cool'n'Quiet, yang sebenarnya berasal dari mereka opsi seluler MP. Faktanya, Cool'n'Quiet adalah sejenis teknologi hemat daya PowerNow!, yang telah lama digunakan di MP seluler dari AMD. Namun kini teknologi ini akhirnya hadir di prosesor desktop perusahaan. Dukungan Cool'n'Quiet adalah keunggulan lain dari Athlon 64 dibandingkan Athlon 64 FX/Opteron, yang belum memiliki teknologi seperti itu. AMD telah lama memperhatikan untuk menurunkan tingkat pembuangan panas prosesor desktopnya.
Harus dikatakan bahwa perusahaan telah lama lebih unggul dari Intel dalam hal ini: prosesor AMD model lama mengeluarkan panas yang jauh lebih sedikit pada beban maksimum daripada model Pentium 4. Selain itu, prosesor menggunakan teknologi yang mengurangi pembuangan panas bahkan pada beban rendah. Lebih banyak keluarga MP
Fitur Athlon XP memiliki kemampuan untuk beralih ke "mode siaga" (Halt/Stop Grant) saat menjalankan perintah HALT, yang mengakibatkan penurunan suhu prosesor saat dimuat di bawah 100%. Sekarang, bagaimanapun, AMD telah melangkah lebih jauh. Prosesor Athlon 64 baru menampilkan skema pengurangan panas yang lebih cerdas.
Selain status Hibah Hentikan/Hentikan, Athlon 64 dapat menyetel ulang kecepatan jam dan voltase untuk mengurangi pembuangan panas lebih lanjut. Dalam pengoperasian menggunakan teknologi ini, kecepatan jam CPU dikendalikan oleh driver prosesor, yang mengatur ulang atau menaikkannya berdasarkan data pada bebannya. Memang, jika prosesor sepenuhnya mengatasi pekerjaan yang ditugaskan padanya dan bebannya jauh lebih kecil dari 100%, maka dimungkinkan untuk mengurangi frekuensi jamnya tanpa mengurangi fungsi sistem secara keseluruhan: ini tidak akan memengaruhi pengoperasian dari sistem dengan cara apapun. Misalnya saat menganggur, bekerja di aplikasi perkantoran, menonton video, mendefrag disk, dan tugas serupa, daya prosesor tidak terpakai sepenuhnya. Dalam kasus seperti itulah driver prosesor mengalihkan Athlon 64 ke frekuensi clock yang lebih rendah. Saat prosesor diharuskan memberikan output penuh, misalnya dalam game, saat menyelesaikan masalah komputasi, dalam tugas penyandian data, dll., frekuensi prosesor naik ke nominal. Inilah cara kerja teknologi Cool'n'Quiet.
Dalam praktiknya, ini terlihat seperti ini. Dalam kondisi normal, dengan beban MP minimal, driver prosesor mereset frekuensi Athlon 64 3200+ dari standar 2 GHz menjadi 800 MHz. Tegangan prosesor kemudian dikurangi menjadi 1.3V. Seperti yang Anda lihat, pengurangan frekuensi clock disediakan dengan mengurangi pengganda prosesor menjadi 4x. Ngomong-ngomong, ini juga menentukan fakta bahwa prosesor Athlon 64 3200+ dilengkapi dengan pengganda yang tidak tetap. Dalam mode ini, prosesor terus bekerja hingga bebannya melebihi 70-80%. Secara khusus, kami dapat menjalankan defragmentasi disk secara bersamaan, memutar file mp3 (file audio), dan menonton video MPEG-4 (file video), sementara prosesor terus beroperasi pada frekuensi 800 MHz.
Ketika beban pada prosesor Athlon 64 pada 800 MHz melebihi batas yang diizinkan, driver mengalihkan MP ke keadaan berikutnya, di mana frekuensi Athlon 64 3200+ adalah 1,8 GHz dan tegangan suplai 1,4V. Ini dicapai lagi dengan mengurangi pengali, kali ini menjadi 9x. Dan hanya jika dalam kasus ini beban prosesor kembali menjadi terlalu tinggi, driver mengalihkan MP ke mode normal: frekuensinya 2 GHz, tegangan suplai 1,5V.
Perhatikan bahwa dalam mode daya rendah dan frekuensi rendah, pembuangan panas prosesor Athlon 64 3200+ turun tajam. Sebagai perbandingan, kami sajikan Tabel 4 dengan pembuangan panas prosesor ini dalam mode utama.

Dengan demikian, penggunaan teknologi Cool'n'Quiet memungkinkan Anda menurunkan suhu prosesor secara signifikan tidak hanya selama waktu idle, tetapi juga selama sejumlah tugas yang tidak memerlukan performa maksimal dari MP. Yang penting performa MP dalam tugas-tugas yang menuntut resource prosesor tidak berkurang sama sekali. Hasilnya, saat menggunakan sistem pendingin dengan kecepatan kipas variabel, penggunaan teknologi Cool'n'Quiet dapat mengurangi tingkat kebisingan secara signifikan.