Anda di halaman 1dari 43

3.

1 / KOMPONEN KOMPUTER 81

TUJUAN BELAJAR Setelah mempelajari bab ini, Anda diharapkan mampu:


• Memahami elemen dasar dari siklus instruksi dan peran
interupsi. Jelaskan konsep interkoneksi dalam sistem komputer. Menilai keunggulan
relatif titiktitik-ke-interkoneksidibandingkan dengan interkoneksi bus.
Mempresentasikan gambaran umum QPI.
• Mempresentasikan gambaran umum PCIe.

Di tingkat atas, komputer terdiri dari CPU (unit pemrosesan pusat), memori, dan I /komponenO,
dengan satu atau lebih modul untuk setiap jenis. Komponen-komponen ini saling berhubungan
dalam beberapa mode untuk mencapai fungsi dasar komputer, yaitu untuk mengeksekusi
programs. Dengandemikian, pada tingkatatas, kita dapat mencirikan sebuahkomputer
sistemdengan menggambarkan (1)perilaku eksternal setiap komponen, yaitu, data dan kontrol
signals bahwa exchanges dengan komponenlainnya, dan (2)intercon struktur sambungan dan
kontrol yang diperlukan untuk mengelola penggunaan struktur interkoneksi.
Pandangan tingkat atas dari struktur dan fungsi inipenting karena kekuatan penjelasannya dalam
memahamisifat komputer. Samaimportantadalah penggunaannya untuk memahami
increasiNGLisu-isu kompleks y evaluasi kinerja. Sebuah pemahaman dari struktur tingkat atas
dan fungsi offers wawasansistem, kemacetan jalur natealter, besarnya kegagalan sistem jika
komponengagal, dan kemudahanmenambahkan peningkatan kinerja. Dalam banyak kasus,
persyaratan untuklebih besar daya sistem yangdankapabilitas yang aman dipenuhi dengan
mengubah desain daripada hanyameningkatkan kecepatan dan keandalan masing-masing
komponen.
Bab ini berfokus pada struktur dasar yang digunakan untukinterkoneksi komponen komputer.
Sebagai latar belakang, bab beginsdengan singkat examinationdari komponendasar dan
persyaratan antarmuka mereka. Kemudian functionagambaranl disediakan.Kami kemudian
bersiap untuk memeriksa penggunaan bus untuk menghubungkan komponen sistem.

3.1 KOMPONEN KOMPUTER

Sebagaimana dibahas dalam Bab 1, hampir semuadesain komputer temporer didasarkan pada
konsep yang dikembangkan oleh John von Neumann di Institute for Advanced Studies,
Princeton. Such sebuah design disebut sebagai arsitekturvon Neumann dan didasarkan pada tiga
konsep utama:
· Data dan instructions disimpan dalam membaca tunggal-memori write.
• Isi memori ini dapat dialamatkan menurut lokasi, tanpa memperhatikan
jenis data yang ada di sana.
• Eksekusi terjadi secara berurutan (kecuali dimodifikasi secara eksplisit) dari satu
instruksi ke instruksi berikutnya.

Alasan di balik konsep-konsep ini didiskusikan dalam Bab 2 tetapi saya perlu meringkasnya
disini. Ada sekumpulan kecil komponen logika dasar yang dapat digabungkan dengan berbagai
cara untuk menyimpan data biner dan melakukan aritmetika dan logika operasi pada data
tersebut. Jika ada perhitungan tertentu yang akan dilakukan, penipu konfigurasi dari komponen
logika yang dirancang khusus untuk perhitungan yang bisa dibangun. Kita dapat memikirkan
proses menghubungkan berbagai komponen dalam konfigurasi yang diinginkan sebagai bentuk
pemrograman. Program yang dihasilkan adalah dalam bentuk perangkat keras dan diistilahkan
sebagai program terprogram.

Sekarang pertimbangkan alternatif ini. Misalkan kita membangun umum purpose konfigurasi
fungsi aritmatika dan logika. Ini set hardware kehendak performulir variabel fungsi ous pada
data tergantung pada sinyal kontrol diterapkan ke perangkat keras. Dalam kasus asli dari
perangkat keras disesuaikan, sistem accepts data dan menghasilkan kembalisults (Fiangka 3.1a).
Dengan perangkat keras tujuan umum, sistem menerima data dan kontrol sinyal dan memberikan
hasil. Jadi, saat memasang kembali perangkat keras untuk setiap baru program, pemrogram
hanya perlu menyediakan satu set sinyal kontrol baru.
Bagaimana harus mengendalikan signals diberikan? Jawabannya sederhana tapi halus.
Keseluruhan program sebenarnya adalah urutan langkah-langkah. Pada setiap langkah,
beberapaaritmatika atau operasilogika dilakukan pada beberapa data. Untuk setiap langkah, satu
set sinyal kontrol baru diperlukan. Mari kita memberikan kode unik untuk setiap set
kemungkinan sinyal kontrol,
(b) Pemrograman di software Gambar 3.1 Perangkat Keras dan Perangkat Lunak Pendekatan

dan mari kita tambahkan ke perangkat keras tujuan umum sebuah segmen yang dapat menerima
kode dan menghasilkan sinyal kontrol (Gambar 3.1b).
Pemrograman sekarang jauh lebih mudah. Alih-alih memasang ulang perangkat keras untuk
setiap program baru, yang perlu kita lakukan hanyalah menyediakan urutan kode baru. Setiap
kode, pada dasarnya, instruksi, dan bagian dari menafsirkan hardware setiap instruksi dan
mengontrol sinyal. Untuk membedakan metode pemrograman baru ini, urutan kode atau
instruksi disebut software.

Figur3.1b menunjukkan dua komponen utama sistem: instruksi penerjemah dan modul fungsi

aritmatika dan logika untuk keperluan umum. Ini dua merupakan CPU. Beberapa komponen lain

diperlukan untuk menghasilkan komputer yang berfungsi. Data dan instruksi harus dimasukkan
ke dalam sistem. Untuk ini kami membutuhkan semacam modul masukan. Modul ini berisi

komponen dasar untuk menerima data dan instruksi dalam beberapa bentuk dan mengubahnya

menjadi bentuk internal sinyal yang dapat digunakan oleh sistem. Diperlukan cara untuk

melaporkan hasil, dan ini dalam bentuk modul keluaran. Secara keseluruhan, ini disebut sebagai

I/O

komponen.
Dibutuhkan satu komponen lagi. Sebuah perangkat input akan membawa instruksidan data
secara berurutan. Tetapi sebuah program tidak selalu dieksekusi secara berurutan; mungkin
melompat-lompat(e.g., IAS melompat instruksi). Demikian pula, operasi pada data mungkin
memerlukan akses ke lebih dari satu elemen pada satu waktu dalam urutan yang telah ditentukan.
Oleh karena itu, harus ada tempat untuk menyimpan sementara instruksi dan data. Modul yang
disebut memory, or main memory, untuk membedakannya dari penyimpanan eksternal atau
perangkat periferal. Von Neumann menunjukkan bahwa memori yang sama dapat digunakan
untuk menyimpan instruksi dan data.
Gambar 3.2 mengilustrasikan atas ini-komponen tingkat dan menunjukkaninteraksi yang tionsdi
antara mereka. CPU bertukar data dengan memori. Untuk tujuan ini, biasanya menggunakan
duainternal(ke CPU)register: register alamat memori (MAR), yang menentukan alamat dalam
memori untuk pembacaan atau penulisan berikutnya, dan register buffer memori (MBR). ), yang
berisi data untuk ditulis ke dalam memori atau menerima data yang dibaca dari memori.
Similarly, I /alamatO register (I /OAR) menetapkan tertentu I /O device. I/O penyangga
mendaftar(I/OBR) digunakan untuk pertukarandata antara I /modulO dan CPU.
Sebuah modul memori consist sehinggafa set lokasi, didefinisikan oleh berurutan num alamat
bered. Setiap lokasi berisi bilangan biner yang dapat diartikan sebagai instruksi atau data. I/ O
transfer modul data dari perangkat eksternal ke CPU dan memori, dan sebaliknya. Ini
berisibuffer internal untuk menyimpan sementara data ini sampai mereka bisa dikirim.
Setelah melihat secara singkatutama ini, sekarang kita beralih ke gambaran umum
komponententang bagaimana komponen ini berfungsi bersama untuk menjalankan program.

3.2 FUNGSI KOMPUTER Fungsi

Dasar yang dilakukan oleh komputer adalah menjalankan program, yang terdiri dari sekumpulan
instruksi yang disimpan dalam memori. Processor melakukan yang sebenarnya bekerja dengan
mengeksekusi instruksi yang ditentukan dalam program ini. Bagian inimemberikan gambaran
umum
Gambar 3.2 Komputer componEnt: Top-Tingkat

Elemen kunci dari eksekusi program. Dalam bentuknya yang paling sederhana, pemrosesan
instruksi terdiri dari dua langkah: Prosesor membaca (mengambil) instruksi dari memori
satupada satu waktu dan menjalankan setiap instruksi. Eksekusi program terdiri dari pengulangan
proses pengambilan instruksi dan eksekusi instruksi. Eksekusi instruksi mungkin melibatkan
beberapa operasi dan tergantung pada sifat instruksi (lihat, untuk Misalnya, bagian bawah
Gambar 2.4).

Pemrosesan yang diperlukan untuk satu instruksi disebut siklus instruksi. Menggunakan
deskripsi dua langkah yang disederhanakan yang diberikan sebelumnya, siklus instruksi adalah
digambarkan pada Gambar 3.3. Kedua langkah tersebut disebut sebagai siklus pengambilan dan
eksekusi siklus. Eksekusi program berhenti hanya jika mesin dimatikan, terjadi kesalahan yang
tidak dapat diperbaiki, atau instruksi program yang menghentikan komputer ditemui.

Mengambil dan menjalankan Instruksi

Pada awal setiap siklus instruksi, prosesor mengambil instruksi dari penyimpanan. Dalam
prosesor tipikal, register yang disebut Program Counter (PC) menyimpan file alamat instruksi
yang akan diambil berikutnya. Kecuali diberitahu sebaliknya, prosesor -

Gambar 3.3 Dasar Instructipada Siklus


selalu menaikkan PC setelah setiap pengambilan instruksi sehingga akan diambil berikutnya
instruksi secara berurutan (yaitu, instruksi yang terletak di memori yang lebih tinggi berikutnya
alamat). Jadi, misalnya, pertimbangkan komputer di mana setiap instruksi menempati
satu memori 16-bit. Asumsikan bahwa penghitung program diatur ke lokasi memori 300, di
mana alamat lokasi mengacu pada kata 16-bit. Prosesor selanjutnya akan
ambil instruksi di lokasi 300. Pada siklus instruksi yang berhasil, itu akan diambil
instruksi dari lokasi 301, 302, 303, dan seterusnya. Urutan ini dapat diubah, seperti
menjelaskan saat ini.
Instruksi yang diambil dimuat ke dalam register di prosesor yang dikenal sebagai
register instruksi (IR). Instruksi berisi bit yang menentukan tindakan
prosesor yang akan digunakan. Prosesor menafsirkan instruksi dan melakukan
tindakan yang diperlukan. Secara umum, tindakan ini terbagi dalam empat kategori:
■ Memori-prosesor: Data dapat ditransfer dari prosesor ke memori atau
dari memori ke prosesor.
■ Prosesor-I / O: Data dapat ditransfer ke atau dari perangkat periferal oleh
mentransfer antara prosesor dan modul I / O.
■ Pemrosesan data: Prosesor dapat melakukan operasi aritmatika atau logika pada data.
■ Kontrol: Sebuah instruksi dapat menetapkan bahwa urutan eksekusi diubah.
Misalnya, prosesor dapat mengambil instruksi dari lokasi 149, yang
menentukan bahwa instruksi berikutnya berasal dari lokasi 182. Prosesor akan melakukannya
ingatlah fakta ini dengan menyetel pencacah program ke 182. Jadi, selanjutnya
mengambil siklus, instruksi akan diambil dari lokasi 182 bukan 150..

Eksekusi instruksi mungkin melibatkan kombinasi tindakan ini.


Pertimbangkan contoh sederhanamenggunakan mesin hipotetis yang mencakup karakteristik
yang tercantum pada Gambar 3.4. Prosesor berisi register data tunggal, yang disebut akumulator
(AC). Baik instruksi dan data memiliki panjang 16 bit. Jadi, akan lebih mudah untuk mengatur
memori menggunakan16-kata-katabit.instruksi Formatmenyediakan 4 bit untuk opcode, sehingga
bisa ada sebanyak 24 = 16 opcode berbeda, dan hingga 212 = 4096 (4K) katamemoridapat
langsung dialamatkan.
Gambar 3.5 mengilustrasikan eksekusi program parsial, menunjukkan bagian-bagian yang
relevan dari register memori dan prosesor. Program fragmen menunjukkanDDS isikata memori
di alamat 940 ke isi kata memori pada

notasi heksa desimal digunakan, di WHIch setiap digit mewakili 4 bit. Ini adalah nota yang
paling nyaman untuk merepresentasikan isi memori dan register ketikapanjang kata adalah
kelipatan 4. Lihat Bab 9 untuk penyegaran dasar pada sistem bilangan (desimal, biner,
hexadecimal).
alamat 941 dan menyimpan hasil di lokasi terakhir. Tiga instruksi, yang dapatdigambarkan
sebagai tiga menjemput dan tiga mengeksekusisiklus, yang diperlukan:
1. PC contains300, alamat dari instruksipertama. Instruksi ini (
nilai 1940 dalam heksadesimal) dimuat ke dalam register instruksi IR, dan PC bertambah.
Perhatikan bahwa proses ini melibatkan penggunaanmemori register alamatdan register buffer
memori. Untuk mempermudah, perantara
registerini diabaikan. 2. 4 bit pertama (digit heksadesimal pertama) di IR menunjukkan bahwa
AC akan
dimuat. Sisa 12 bit (tiga digit heksadesimal) menentukan alamat
(940) dari mana data akan dimuat. 3. Instruksi berikutnya (5941) diambil dari lokasi301, dan PC
bertambah. 4. Isi AC lama dan isi lokasi 941 ditambah, dan
hasilnya disimpan di AC. 5. Instruksi berikutnya (2941) diambil dari lokasi 302, dan PC
bertambah. 6. Isi AC disimpan di lokasi 941.

Dalam contoh ini, tiga siklus instruksi, masing-masing terdiri dari siklus pengambilan dan siklus
eksekusi, diperlukan untuk menambahkan konten lokasi 940 ke konten 941. Dengan set instruksi
yang lebih kompleks, lebih sedikit siklus yang diperlukan. Beberapalama prosesor,
misalnya,menyertakan instruksi yang mengandung lebih dari satumemori alamat. Dengan
demikian, siklus eksekusi untuk instruksi tertentu padaproc tersebutessorsdapat involsudah lebih
dari satu referensi ke memori. Selain itu, sebagai gantimemori referensi, instruksi dapat
menentukan operasi I /O.
Sebagai contoh,PDP-prosesor11 menyertakan instruksi, diekspresikansimbolis secarasebagai
ADD BA, yang menyimpan jumlah darilokasi memori B dan A ke dalam lokasi memoriA.
Sebuah siklus instruksi tunggal dengan langkah-langkah berikut terjadi:
• Ambil instruksi ADD. . Baca konten lokasi memori A ke dalam prosesor.
Bacalah isi memolokasi B ke dalam prosesor. Agar konten A tidak hilang, prosesor harus
memiliki setidaknya dua register untuk
menyimpanmemori nilai, bukan satu akumulator.
• Tambahkan kedua nilai tersebut.
• Tuliskan hasil dari proseske lokasi memori A.
Dengan demikian, siklus eksekusi untuk instruksi tertentumungkin melibatkan lebih dari satu
referensi ke memori. Juga, bukan referensi memori, instruksi dapat menentukan operasi I /O
operasi. Dengan pertimbangan tambahan ini, Gambar 3.6 memberikan tampilan yang lebih rinci
padainstruksi dasarsiklusdari Gambar 3.3. Gambar tersebut berupa diagram keadaan. Untuk
setiap siklus instruksi tertentu, beberapa status mungkin nol dan yang lain mungkin dilihat lebih
dari sekali.dapat dijelaskan sebagai berikut:
• StatusPerhitungan alamat instruksi (iac): Tentukanalamat dari next yang
instruksiakan dijalankan. Biasanya, ini melibatkan penambahan sejumlah tetap untuk

Gambar 3.6 Siklus Instruksi Diagramtate Diagram


alamat dari instruksi sebelumnya. Misalnya, jika setiap instruksi memiliki panjang 16 bit dan
memori diatu rmenjadi kata-kata 16-bit, maka tambahkan 1 ke alamat sebelumnya. Jika,
sebaliknya, memori diatursebagai byte 8dialamatkan satu per satu-bit yang dapat , lalu
tambahkan 2 ke alamat sebelumnya. Pengambilan instruksi (jika): Membaca instruksi dari lokasi
memorinyake dalam prosesor. Instruksi pengoperasian decOding (iod):
Menganalisismenginstruksikanionuntuk menentukan jenisoperasi yang akan dilakukan dan
operan (s) yang akan digunakan.
• Perhitungan alamat operan (oac): Jika operasi melibatkan referensi ke
operand dalam memori atau tersediamelalui I /O,tentukanalamat
operan tersebut.
• Operand fetch (of): Mengambil operadari memori atau mengambilnya kembalidari I /O ..
Operasi data (lakukan): Lakukan operasi yang ditunjukkan dalam instruksi.
Operand store (os): Menulis hasilnya ke memori atau ke I /O.

Status di bagian atas Gambar 3.6 melibatkan pertukaran antara prosesor dan memori atau
I/modulO. Status di bagian bawah diagram hanya melibatkan operasi prosesor internal. Keadaan
oac muncul dua kali, karena instruksi mungkin melibatkan membaca, menulis, atau keduanya.
Namun, tindakan yang dilakukan selama keadaan tersebut pada dasarnya sama di kedua kasus
tersebut, sehingga hanya diperlukan satustatus pengenal.
Perhatikan juga bahwa diagram memungkinkan beberapa operand dan beberapa hasil, karena
beberapa instruksi pada beberapa komputer memerlukan ini. Sebagai contoh, PDP-11 instruksi
ADD A, B ulangsults di urutan berikut negara: IAC, jika, iod, OAC, dari, OAC, dari, lakukan,
OAC, os.
Akhirnya, pada beberapa mesin, sebuah instruksi dapat menentukan suatu operasi untuk menjadi
per dibentuk pada vektor (array satu dimensi) angka atau string (satu-Dimensional array)
karakter.Seperti yang ditunjukkan
Gambar 3.6, ini akan melibatkanoperan berulang pengambilandan/atau operasi penyimpanan.

Interupsi

Hampir semua komputer menyediakan mekanisme di mana modul lain (I / O, memori)


dapat mengganggu pemrosesan normal prosesor. Tabel 3.1 mencantumkan kelas interupsi yang
paling umum. Sifat spesifik dari interupsi ini akan diperiksa nanti buku ini, terutama di Bab 7
dan 14. Namun, kita perlu memperkenalkan konsepnya sekarang untuk memahami lebih jelas
sifat siklus instruksi dan implikasi interupsi pada struktur interkoneksi. Pembaca tidak perlu
khawatir pada tahap ini tentang detail pembuatan dan pemrosesan interupsi, tetapi hanya fokus
pada komunikasi antar modul yang dihasilkan dari interupsi.

Interupsi disediakan terutama sebagai cara untuk meningkatkan efisiensi pemrosesan.


Misalnya, sebagian besar perangkat eksternal jauh lebih lambat daripada prosesor. Seharusnya
bahwa prosesor sedang mentransfer data ke printer menggunakan skema siklus instruksi dari
Gambar 3.3. Setelah setiap operasi tulis, prosesor harus berhenti dan tetap menganggur hingga
printer mengejar. Durasi jeda ini mungkin di urutan ratusan atau bahkan ribuan siklus instruksi
yang tidak melibatkan memori. Yang jelas, ini sangat boros penggunaan prosesor.

Gambar 3.7a mengilustrasikan keadaan ini. Program pengguna melakukan serangkaian


panggilan TULIS yang diselingi dengan pemrosesan. Merujuk pada segmen kode 1, 2, dan 3
urutan instruksi yang tidak melibatkan I / O. Panggilan WRITE ditujukan ke I / O program yang
merupakan utilitas sistem dan yang akan menjalankan operasi I / O aktual. Itu Program I / O
terdiri dari tiga bagian:

■ Urutan instruksi, berlabel 4 pada gambar, untuk mempersiapkan I / O yang sebenarnya operasi.
Ini mungkin termasuk menyalin data untuk menjadi keluaran ke buffer khususdan menyiapkan
parameter untuk perintah perangkat.

■ Perintah I / O yang sebenarnya. Tanpa menggunakan interupsi, sekali perintah ini dikeluarkan,
program harus menunggu perangkat I / O melakukan yang diminta fungsi (atau polling
perangkat secara berkala). Program mungkin hanya menunggu berulang kali melakukan operasi
uji untuk menentukan apakah operasi I / O sudah selesai.

■ Urutan instruksi, berlabel 5 pada gambar, untuk menyelesaikan operasi.Ini mungkin termasuk
mengatur bendera yang menunjukkan keberhasilan atau kegagalan operasi.

Tabel 3.1 Kelas Interupsi


Gambar 3.7 Program Flow Pengendalian tanpa dan dengan interupsi

Karena I/ O operation dapat mengambil relatwaktuively lama untuk lengkap , program I/ O


ditutup menunggu operasi selesai; oleh karena itu, progpenggunaram dihentikan pada titik
panggilan TULIS untuk beberapa waktu yang cukup lama.

Interupsi dan siklus perintah. Dengan interupsi, prosesor dapat terlibat dalam melaksanakan
instruksi lain sementara I/O OPErasi sedang berlangsung. Perhatikan aliran kendali pada Gambar
3.7b. Seperti sebelumnya, progpenggunarammencapai titik di mana ia membuat sistem panggilan
dalam bentuk panggilan TULIS. I/ O program yang dipanggil dalam kasus ini hanya terdiri dari
kode persiapan dan actual I / O perintah. Setelah beberapa instruksi ini dijalankan, kontrol
kembali ke program pengguna. Sementara itu, perangkat eksternal sibuk menerima data
darikomputer memoridan mencetaknya.ini I /O operasidilakukan bersamaan dengan pelaksanaan
instruksi dalam program pengguna.
Bila eksternal perangkatmenjadi siap untuk dilayani-yaitu, ketika siapuntuk menerima lebih
banyak data dari prosesor- I /modulO untuk eksternal perangkatmengirimkan diterrupt
permintaan sinyal ke prosesor. Prosesor merespon dengan menghentikan operatipada program
saat ini, bercabang untuk aprogram untuk layanan tertentu I /perangkatO, yang dikenal sebagai
interrupt handler, dan melanjutkan original eksekusisetelah perangkat serviCED. Titik-titik di
mana interupsitersebut terjadi ditunjukkan dengan tanda bintang pada Gambar 3.7b.
Mari kita coba menjelaskan apa yang terjadi pada Gambar 3.7. Kamimemiliki program pengguna
yang berisi duaTULISperintahE. Ada segmen kode di awal, maka satu perintah MENULIS,
maka segmen kedua kode, maka WkeduaRITE command, maka segmenketiga dan terakhir dari
kode. Tia MENULIS perintah memanggil program I /O yang disediakan oleh OS. Similarly, I/
O Program terdiri dari seg ment kode, diikuti dengan I /perintahO, diikuti oleh segmen lain dari
kode.
Gambar 3.8
Pengalihan Kontrol melalui Interupsi

Dari sudut pandang program pengguna, interupsi hanya berupa:interupsi n dari urutan eksekusi
normal. Ketika pemrosesan interupsi selesai, eksekusi dilanjutkan (Gambar 3.8). Jadi, program
penggunatidak harus berisi kode khusus untuk mengakomodasi interupsi; prosesor danopesistem
rating bertanggung jawab untuk menangguhkan program pengguna dan kemudian
melanjutkannya pada titik yang sama.
Untuk mengakomodasi interupsi, siklus interrupt ditambahkan ke siklus instruksi, seperti yang
ditunjukkan pada Gambar 3.9. Dalam siklus interupsi, prosesor memeriksa untuk melihat apakah
adagangguan yang terjadi, yang ditunjukkan dengan adanya sinyal interupsi. Jika tidak ada
interupsi yang tertunda, prosesor melanjutkan ke siklus pengambilan dan mengambil instruksi
berikutnya dari program saat ini. Jika interupsi tertunda, prosesor melakukan hal berikut:

Ini menangguhkan eksekusi program saat ini yang sedang dieksekusi dan menyimpan
konteksnya. Ini t berarti menyelamatkandia mengatasi dari instruksi berikutnya yang akan
dieksekusi

Gambar 3.9
Petunjuktentang Siklus dengan Interupsi

(status program penghitungram saat ini) dan data lain yang relevan dengan aktivitas prosesor
saat ini.
• Ini mengatur penghitung programke alamat awal dari penanganan interupsi rutin.
Prosesor sekarang melanjutkan ke siklus pengambilan dan mengambil instruksi pertama dalam
program penangan interupsi, yang akan melayani interupsi. Programinterupsi penanganumumnya
merupakan bagian dari sistem operasi. Biasanya, program ini menentukan sifat interupsi dan
perbentuk tindakan apa pun yangdiperlukan. Dalam contoh yang telah kita gunakan, handler
menentukanI/modulO mana yang menghasilkan interupsi dan dapat bercabang ke program yang
akan menulis lebih banyak data ke I/modulO tersebut. Ketika rutin interrupt handler selesai,
processor dapat melanjutkan mantanecution dari program pengguna pada titik gangguan.
Jelasbahwa ada beberapa overhead yang divolved dalam proses ini. Petunjuk tambahan harus
diberikan(dalam penangan interupsi) untuk menentukan sifat interupsi dan untuk memutuskan
tindakan yang sesuai. Namun demikian, karenarelatif jumlah waktu yangbesar yang akan
terbuang hanya dengan menunggu operasi I/O, prosesor dapat digunakan jauh lebih efisien
dengan penggunaan interupsi.
Untuk mengapresiasi peningkatan efisiensi, perhatikan Gambar 3.10, yang merupakanpengaturan
waktu diagramberdasarkan aliran kontraspada Gambar 3.7a dan 3.7b. Dalam gambarini,
pengguna segmen kode programberbayang green, dan I /O segmen kode program adalah

diarsir abu-abu. Gambar 3.10a menunjukkan kasus di mana interupsi tidak digunakan. Pro cessor
harus menunggu sementara I /O operasi dilakukan.
Gambar 3.7b dan 3.10b mengasumsikan bahwa waktu yang diperlukan untuk operasi I /O relatif
singkat: kurang dari waktu untuk menyelesaikan pelaksanaan instruksiantaratulis operasidalam
program pengguna. Dalam hal ini, segmen kode berlabel kode segmen 2 terputus. Sebagian dari
kode (2a) dijalankan (saat operasi I /O dilakukan) dan kemudian interupsi terjadi (setelahselesai I
/ O operasi). Setelah interupsi dilayani, eksekusi dilanjutkandengan sisa segmen kode 2 (2b).
Kasus yang lebih umum, terutama untuk perangkat yang lambat seperti printer, adalah bahwa
operasi I/O akan memakan waktu lebih lama daripada menjalankan urutan instruksi pengguna .
Fiangka 3.7c menunjukkan keadaan ini. Dalam kasus ini, program pengguna mencapai panggilan
TULIS kedua sebelum operasi I /O yang dilakukan oleh panggilan pertama selesai. Hasilnya
adalah program pengguna ditutup pada saat itu. Ketika diawali ing I /O operasi selesai, ini
panggilan MENULIS baru dapat diproses, dan yang baru I / O operasidapat dimulai. Gambar
3.11 menunjukkan waktu untuk situasi ini dengan

dan tanpa penggunaan interupsi. Kita dapat melihat bahwa masih ada keuntungan dalam efisiensi
karena bagian waktu selama operasi I/O berlangsung tumpang tindih dengan pelaksanaan
instruksi pengguna.
Gambar 3.12 menunjukkan diagram keadaan siklus instruksi yang direvisi yang mencakupinter
pemrosesan siklusrupt.

INTERRU GANDAPTS Selama ini pembahasan hanya terfokus pada terjadinya satu interupsi.
Misalkan, bagaimanapun, bahwa beberapa interupsi dapat terjadi. Sebagai contoh, sebuah
program mungkin menerima data dari garis komunikasi dan mencetakresu.Kejadian Printer akan
menghasilkan interupsi setiap kali menyelesaikan operasi pencetakan. Pengontrol jalur
komunikasi akangenmenilai interupsi setiap kali unit data tiba. Unit baik bisa menjadi karakter
tunggal atau blok,tergantung pada sifat dari communikationdiscipline. Dalam kasus apapun, itu
adalah posssayable untuk komunikasi mengganggu terjadi sementara interupsi printer sedang
processed.
Dua pendekatan dapat diambil untuk dealing dengan multiple interupsi. Yang pertama adalah
untuk interupsi menonaktifkan sementara interrupt yaitu Being diproses. Sebuah interupsi
dinonaktifkan hanya means bahwa prosesor dapat dan akan mengabaikan bahwapermintaan
sinyalinterupsi. Jika interupsi terjadi selama waktu ini,interupsi biasanyatetap tertunda dan akan
diperiksa oleh prosesor setelah prosesor mengaktifkan interupsi. Thus, when a user program is
executing and an interrupt occurs, interrupts are disabled immedi ately. After the interrupt
handler routine completes, interrupts are enabled before resuming the user program, and the
processor checks to see if additional interrupts have occurred. This approach is nice and simple,
as interrupts are handled in strict sequential order (Figure 3.13a).
The drawback to the preceding approach is that it does not take into account relative priority or
time-critical needs. For example, when input arrives from the communications line, it may
need to be absorbed rapidly to make room for more input. If the first batch of input has not
been processed before the second batch arrives, data may be lost.
A second approach is to define priorities for interrupts and to allow an interrupt of higher
priority to cause a lower-priority interrupt handler to be itself interrupted (Figure 3.13b). As an
example of this second approach, consider a system with three I/O devices: a printer, a disk,
and a communications line, with increasing priori ties of 2, 4, and 5, respectively. Figure 3.14
illustrates a possible sequence. A user program begins at t = 0. At t = 10, a printer interrupt
occurs; user information is placed on the system stack and execution continues at the printer
interrupt service routine (ISR). While this routine is still executing, att = 15, a
communications inter rupt occurs. Because the communications line has higher priority than
the printer, the interrupt is honored. The printer ISR is interrupted, its state is pushed onto the
stack, and execution continues at the communications ISR. While this routine is exe cuting,
a disk interrupt occurs (t = 20). Because this interrupt is of lower priority, it is simply held, and
the communications ISR runs to completion.
When the communications ISR is complete (t = 25), the previous proces sor state is restored,
which is the execution of the printer ISR. However, before even a single instruction in that
routine can be executed, the processor honors the higher-priority disk interrupt and control
transfers to the disk ISR. Only when that
96
Instruction
fetch
Operand
fetch
Operand
store
Multiple
operands
Multiple
results
Instruction
address
calculation
Instruction
operation
decoding
Operand
address
calculation
Data
operation
Operand
address
calculation
Interrupt
check
Interrupt
Instruction complete, fetch next instruction
Return for string or vector data
No
interrupt
Figure 3.12
Instruction Cycle State Diagram, with Interrupts

User program
Interrupt handler X
ITTTTTTTTTT

Interrupt handler Y
ITT
IIIIIIIIII

(a) Sequential interrupt processing

Interrupt handler X
User program
LIITUNUT
|||||||IIIIIIIIIIIIIIIIIIIIIIIIII
Interrupt handler Y
MITTIILIITTITÍ
(b) Nested interrupt processing Transfer of Control with Multiple Interrupts
Figure 3.13

97

98 CHAPTER 3/ATOP-LEVEL VIEW OFCOMPUTER FUNCTION AND


INTERCONNECTION

Printer
interrupt service routine
Communication
interrupt service routine
User program

15
10
I=
t=
IIIIIIIIIIII
t=25

t = 40
IIIIIIIIIIIIIIIIIIIIIIIIII
Disk interrupt service routine

t = 35
IIIIIIII

Figure 3.14
Example Time Sequence of Multiple Interrupts

routine is complete (t = 35) is the printer ISR resumed. When that routine com pletes (t = 40),
control finally returns to the user program.
Fungsi I / O

Sejauh ini, kita telah membahas pengoperasian komputer yang dikendalikan oleh prosesor, dan
kita telah melihat terutama pada interaksi prosesor dan memori.

Pembahasan hanya menyinggung peran komponen I / O. Peran ini dibahas secara rinci di Bab 7,
tetapi ringkasan singkat ada di sini.

Modul I / O (misalnya, pengontrol disk) dapat bertukar data secara langsung dengan file

prosesor. Sama seperti prosesor dapat memulai membaca atau menulis dengan memori,
menunjuk alamat lokasi tertentu, prosesor juga dapat membaca data dari atau menulis data ke
modul I / O. Dalam kasus terakhir ini, prosesor mengidentifikasi yang spesifik perangkat yang
dikontrol oleh modul I / O tertentu. Jadi, urutan instruksi serupa dalam bentuk dengan Gambar
3.5 dapat terjadi, dengan instruksi I / O daripada instruksi referensi memori. Dalam beberapa
kasus, diinginkan untuk mengizinkan pertukaran I / O terjadi secara langsung dengan
Penyimpanan. Dalam kasus seperti itu, prosesor memberi modul I / O otoritas untuk membaca
dari atau tulis ke memori, sehingga transfer memori I / O dapat terjadi tanpa mengikat naikkan
prosesor. Selama transfer tersebut, modul I / O mengeluarkan perintah baca atau tulis ke memori,
membebaskan tanggung jawab prosesor untuk pertukaran tersebut. Ini Operasi ini dikenal
sebagai akses memori langsung (DMA) dan dibahas pada Bab 7.

3.3 / INTERCONNECTION STRUCTURES 99

3.3 INTERCONNECTION STRUCTURES

Komputer terdiri dari sekumpulan komponen atau modul dengan tiga tipe dasar (prosesor,

memori, I / O) yang saling berkomunikasi. Akibatnya, komputer adalah a jaringan modul dasar.

Jadi, harus ada jalur untuk menghubungkan modul. Kumpulan jalur yang menghubungkan

berbagai modul disebut struktur interkoneksi. Desain struktur ini akan tergantung pada bursa itu

harus dibuat di antara modul.

Berikut ini struktur dari tipe 2:


■ Memori: Biasanya, modul memori terdiri dari N kata dengan panjang yang sama.

Setiap kata diberi alamat numerik unik (0, 1, c, N-1). Sebuah kata

data dapat dibaca dari atau ditulis ke dalam memori. Sifat operasi ditunjukkan dengan sinyal

kontrol baca dan tulis. Lokasi operasi adalah

ditentukan dengan alamat.

■ Modul I / O: Dari sudut pandang internal (ke sistem komputer), I / O adalah

secara fungsional mirip dengan memori. Ada dua operasi; Baca dan tulis. Selanjutnya, modul I /

O dapat mengontrol lebih dari satu perangkat eksternal. Kami bisa merujuk

untuk setiap antarmuka ke perangkat eksternal sebagai port dan memberikan masing-masing

yang unik

alamat (misalnya, 0, 1, c, M-1). Selain itu, ada jalur data eksternal untuk

input dan output data dengan perangkat eksternal. Terakhir, modul I / O

mungkin dapat mengirim sinyal interupsi ke prosesor.

■ Prosesor: Prosesor membaca instruksi dan data, kemudian menulis data

memproses, dan menggunakan sinyal kontrol untuk mengontrol keseluruhan operasi sistem. Ini

juga menerima sinyal interupsi.

Daftar sebelumnya mendefinisikan data yang akan dipertukarkan. Interkoneksi

struktur harus mendukung jenis transfer berikut:

■ Memori ke prosesor: Prosesor membaca instruksi atau unit data

dari ingatan.

■ Prosesor ke memori: Prosesor menulis satu unit data ke memori.

■ I / O ke prosesor: Prosesor membaca data dari perangkat I / O melalui I / O

modul.

■ Prosesor ke I / O: Prosesor mengirimkan data ke perangkat I / O.


■ I / O ke atau dari memori: Untuk dua kasus ini, modul I / O diperbolehkan

bertukar data langsung dengan memori, tanpa melalui prosesor,

menggunakan akses memori langsung.

Selama bertahun-tahun, sejumlah struktur interkoneksi telah dicoba. Sejauh ini

yang paling umum adalah (1) bus dan berbagai struktur bus ganda, dan (2) struktur interkoneksi

titik ke titik dengan transfer data terpaket. Kami mengabdikan

sisa bab ini untuk diskusi tentang struktur ini.

3.4 BUS INTERCONNECTION

The bus was the dominant means of computer system component interconnection for decades.
For general-purpose computers, it has gradually given way to various point-to-point
interconnection structures, which now dominate computer system design. However, bus
structures are still commonly used for embedded systems, par ticularly microcontrollers. In this
section, we give a brief overview of bus structure. Appendix C provides more detail.
A bus is a communication pathway connecting two or more devices. A key characteristic of a
bus is that it is a shared transmission medium. Multiple devices connect to the bus, and a signal
transmitted by any one device is available for recep tion by all other devices attached to the bus.
If two devices transmit during the same time period, their signals will overlap and become
garbled. Thus, only one device at a time can successfully transmit.

3.4 / BUS INTERCONNECTION 101

Bus adalah alat dominan interkoneksi komponen sistem komputer

selama beberapa dekade. Untuk komputer tujuan umum, secara bertahap telah diberikan cara
untuk berbagai

struktur interkoneksi point-to-point, yang sekarang mendominasi sistem komputer


rancangan. Namun, struktur bus masih umum digunakan untuk sistem tertanam, terutama
mikrokontroler. Pada bagian ini, kami memberikan gambaran singkat tentang struktur bus.

Lampiran C memberikan detail lebih lanjut.

Bus adalah jalur komunikasi yang menghubungkan dua atau lebih perangkat. Sebuah kunci

karakteristik bus adalah bahwa itu adalah media transmisi bersama. Beberapa perangkat

terhubung ke bus, dan sinyal yang dikirim oleh salah satu perangkat tersedia untuk diterima oleh
semua perangkat lain yang terpasang ke bus. Jika dua perangkat mengirimkan dalam waktu yang
sama

dalam jangka waktu tertentu, sinyalnya akan tumpang tindih dan menjadi kacau. Jadi, hanya satu
perangkat di

suatu waktu berhasil mengirimkan.

Biasanya, bus terdiri dari beberapa jalur komunikasi, atau jalur. Setiap

garis mampu memancarkan sinyal yang mewakili biner 1 dan biner 0. Seiring waktu,

urutan digit biner dapat dikirim melalui satu baris. Diambil bersama-sama,

beberapa baris bus dapat digunakan untuk mengirimkan digit biner secara bersamaan (paralel).
Misalnya, unit data 8-bit dapat dikirim melalui delapan jalur bus.
Sistem komputer berisi sejumlah bus berbeda yang menyediakan jalur

antara komponen di berbagai tingkat hierarki sistem komputer. Bus itu

menghubungkan komponen komputer utama (prosesor, memori, I / O) disebut sistem

bis. Struktur interkoneksi komputer yang paling umum didasarkan pada penggunaan

satu atau lebih bus sistem.

Sebuah bus sistem biasanya terdiri dari sekitar lima puluh hingga ratusan yang terpisah

garis. Setiap baris diberi arti atau fungsi tertentu. Meski ada

banyak desain bus yang berbeda, di setiap bus jalur dapat diklasifikasikan menjadi tiga kelompok
fungsional (Gambar 3.16): jalur data, alamat, dan kontrol. Selain itu, mungkin ada

menjadi jalur distribusi daya yang memasok daya ke modul yang terpasang.

Garis data menyediakan jalur untuk memindahkan data di antara modul sistem. Ini

garis, secara kolektif, disebut bus data. Bus data dapat terdiri dari 32, 64, 128,

atau bahkan garis yang lebih terpisah, jumlah garis yang disebut sebagai lebar
bus data. Karena setiap baris hanya dapat membawa satu bit pada satu waktu, sejumlah

baris menentukan berapa banyak bit yang dapat ditransfer pada suatu waktu. Lebar data

bus merupakan faktor kunci dalam menentukan kinerja sistem secara keseluruhan. Misalnya, jika
file

bus data adalah 32 bit lebar dan setiap instruksi 64 bit panjang, maka prosesor harus

mengakses modul memori dua kali selama setiap siklus instruksi.

Baris alamat digunakan untuk menunjukkan sumber atau tujuan data pada

bus data. Misalnya, jika prosesor ingin membaca sebuah kata (8, 16, atau 32 bit)

data dari memori, menempatkan alamat kata yang diinginkan pada baris alamat.

Jelas, lebar bus alamat menentukan kemungkinan kapasitas memori maksimum dari sistem.
Lebih lanjut, baris alamat umumnya juga digunakan untuk mengalamatkan I / O

pelabuhan. Biasanya, bit orde tinggi digunakan untuk memilih modul tertentu di

bus, dan bit urutan bawah memilih lokasi memori atau port I / O di dalam modul.

Misalnya, pada bus alamat 8-bit, alamat 01111111 dan di bawahnya mungkin menjadi referensi
lokasi dalam modul memori (modul 0) dengan memori 128 kata, dan alamat

10000000 dan yang lebih baru mengacu pada perangkat yang terpasang ke modul I / O (modul
1).

Garis kontrol digunakan untuk mengontrol akses dan penggunaan data dan

baris alamat. Karena data dan baris alamat digunakan bersama oleh semua komponen,

harus ada cara untuk mengontrol penggunaannya. Sinyal kontrol mengirimkan informasi
perintah dan waktu di antara modul sistem. Sinyal waktu menunjukkan

validitas data dan informasi alamat. Sinyal perintah menentukan operasi yang akan dilakukan

dilakukan. Garis kontrol tipikal meliputi:

■ Penulisan memori: menyebabkan data di bus ditulis ke lokasi yang dituju.

■ Pembacaan memori: menyebabkan data dari lokasi yang dituju ditempatkan di bus.

■ I / O write: menyebabkan data pada bus menjadi output ke port I / O yang dialamatkan.

■ Pembacaan I / O: menyebabkan data dari port I / O yang dialamatkan ditempatkan di bus.

■ Transfer ACK: menunjukkan bahwa data telah diterima dari atau ditempatkan di

bis.

■ Permintaan bus: menunjukkan bahwa modul perlu menguasai bus.

■ Pemberian bus: menunjukkan bahwa modul yang meminta telah diberikan kontrol atas

bis.
■ Permintaan interupsi: menunjukkan bahwa interupsi sedang menunggu.

■ Interrupt ACK: mengakui bahwa interrupt yang tertunda telah dikenali.

■ Jam: digunakan untuk menyinkronkan operasi.

■ Reset: menginisialisasi semua modul.

Pengoperasian bus adalah sebagai berikut. Jika satu modul ingin mengirim data ke

lain, itu harus melakukan dua hal: (1) mendapatkan penggunaan bus, dan (2) mentransfer data

melalui bus. Jika satu modul ingin meminta data dari modul lain, itu harus

(1) dapatkan penggunaan bus, dan (2) transfer permintaan ke modul lain melalui

garis kontrol dan alamat yang sesuai. Kemudian harus menunggu modul kedua itu

kirim datanya.

3.5 POINT-TO-POINT INTERCONNECT

Arsitektur bus bersama adalah pendekatan standar untuk interkoneksi antar

prosesor dan komponen lainnya (memori, I / O, dan sebagainya) selama beberapa dekade. Tetapi
sistem kontemporer semakin bergantung pada interkoneksi titik-ke-titik daripada

bus bersama.

Alasan utama yang mendorong perubahan dari bus ke interkoneksi titik ke titik adalah kendala
listrik yang dihadapi dengan peningkatan frekuensi lebar.

bus sinkron. Pada kecepatan data yang semakin tinggi, semakin sulit untuk melakukan fungsi
sinkronisasi dan arbitrase secara tepat waktu.

Selanjutnya, dengan munculnya chip multicore, dengan banyak prosesor dan signifikan
memori pada satu chip, ditemukan bahwa penggunaan bus bersama konvensional pada

chip yang sama memperbesar kesulitan untuk meningkatkan kecepatan data bus dan mengurangi
bus

latensi untuk mengikuti prosesor. Dibandingkan dengan bus bersama, interkoneksi titik-titik
memiliki latensi yang lebih rendah, kecepatan data yang lebih tinggi, dan skalabilitas yang lebih
baik.

Di bagian ini, kami melihat contoh penting dan representatif dari

pendekatan interkoneksi point-to-point: Intel QuickPath Interconnect (QPI), yang

diperkenalkan pada tahun 2008.3.5 / point-to-point interConneCt 10

Berikut ini adalah karakteristik signifikan QPI dan point-to-point lainnya

skema interkoneksi:

■ Beberapa koneksi langsung: Nikmati beberapa komponen dalam sistem

koneksi berpasangan langsung ke komponen lain. Ini menghilangkan kebutuhan akan

arbitrase ditemukan dalam sistem transmisi bersama.

■ Arsitektur protokol berlapis: Seperti yang ditemukan di lingkungan jaringan, seperti

Jaringan data berbasis TCP / IP, interkoneksi tingkat prosesor ini menggunakan arsitektur
protokol berlapis, daripada penggunaan sederhana dari sinyal kontrol yang ditemukan

dalam pengaturan bus bersama.

■ Transfer data dalam paket: Data tidak dikirim sebagai aliran bit mentah. Melainkan, data

dikirim sebagai urutan paket, yang masing-masing menyertakan header kontrol dan
kode kontrol kesalahan.

Gambar 3.17 mengilustrasikan penggunaan khas QPI pada komputer multicore. QPI

tautan (ditunjukkan oleh pasangan panah hijau pada gambar) membentuk kain switching itu

memungkinkan data untuk berpindah ke seluruh jaringan. Koneksi QPI langsung dapat dibuat
antara setiap pasangan prosesor inti. Jika inti A pada Gambar 3.17 perlu diakses

pengontrol memori di inti D, ia mengirimkan permintaannya melalui inti B atau C,

yang pada gilirannya harus meneruskan permintaan itu ke pengontrol memori di inti D.

Demikian pula, sistem yang lebih besar dengan delapan atau lebih prosesor dapat dibangun
menggunakan prosesor

dengan tiga tautan dan lalu lintas perutean melalui prosesor perantara.

Selain itu, QPI digunakan untuk menghubungkan ke modul I / O, yang disebut hub I / O (IOH).

IOH bertindak sebagai sakelar yang mengarahkan lalu lintas ke dan dari perangkat I / O.
Biasanya lebih baru

sistem, tautan dari IOH ke pengontrol perangkat I / O menggunakan interkoneksi

teknologi yang disebut PCI Express (PCIe), yang akan dijelaskan nanti di bab ini. IOH

menerjemahkan antara protokol dan format QPI dan protokol dan format PCIe. Inti juga
terhubung ke modul memori utama (biasanya memori menggunakan dinamik

mengakses teknologi memori acak (DRAM)) menggunakan bus memori khusus.

QPI didefinisikan sebagai arsitektur protokol empat lapisan, 3 yang mencakup lapisan berikut
(Gambar 3.18):

■ Fisik: Terdiri dari kabel aktual yang membawa sinyal, serta sirkuit
dan logika untuk mendukung fitur tambahan yang diperlukan dalam transmisi dan penerimaan

dari angka 1 dan 0. Satuan transfer pada lapisan Fisik adalah 20 bit, yaitu

disebut Phit (unit fisik).

■ Tautan: Bertanggung jawab atas transmisi dan kontrol aliran yang andal. Lapisan Link

unit transfer adalah Flit 80-bit (unit kontrol aliran).

■ Routing: Menyediakan kerangka kerja untuk mengarahkan paket melalui fabric.

■ Protokol: Kumpulan aturan tingkat tinggi untuk bertukar paket data antara

perangkat. Sebuah paket terdiri dari sejumlah Flits yang tidak terpisahkan.

QPI Physical Layer

Figure 3.19 shows the physical architecture of a QPI port. The QPI port consists of 84
individual links grouped as follows. Each data path consists of a pair of wires that transmits
data one bit at a time; the pair is referred to asa lane. There are 20 data lanes in each direction
(transmit and receive), plus a clock lane in each direction. Thus, QPI is capable of transmitting
20 bits in parallel in each direction. The 20-bit unit is referred to as a phit. Typical signaling
speeds of the link in current products calls for operation at 6.4 GT/s (transfers per second). At 20
bits per transfer, that adds up to 16 GB/s, and since QPI links involve dedicated bidirectional
pairs, the total capacity is 32 GB/s.

3 The reader unfamiliar with the concept of a protocol architecture will find a brief overview
in Appendix D.

3.5 / POINT-TO-POINT INTERCONNECT 105

COMPONENT A Intel QuickPath Interconnect Port


Fwd Clk
Transmission Lanes
Reception Lanes
Rcv Clk

Reception Lanes
Transmission Lanes
Rcv Clk
Fwd Clk
Intel QuickPath Interconnect Port
COMPONENT B

Figure 3.19
Physical Interface of the Intel QPI Interconnect

The lanes in each direction are grouped into four quadrants of 5 lanes each. In some applications,
the link can also operate at half or quarter widths in order to reduce power consumption or
work around failures.
The form of transmission on each lane is known as differential signaling, or balanced
transmission. With balanced transmission, signals are transmitted as a cur rent that travels
down one conductor and returns on the other. The binary value depends on the voltage
difference. Typically, one line has a positive voltage value and the other line has zero voltage,
and one line is associated with binary 1 and one line is associated with binary 0. Specifically, the
technique used by QPI is known as low-voltage differential signaling (LVDS). In a typical
implementation, the trans mitter injects a small current into one wire or the other, depending on
the logic level to be sent. The current passes through a resistor at the receiving end, and then
returns in the opposite direction along the other wire. The receiver senses the polar ity of the
voltage across the resistor to determine the logic level.
Another function performed by the physical layer is that it manages the trans lation between
80-bit flits and 20-bit phits using a technique known as multilane distribution. The flits can be
considered as a bit stream that is distributed across the data lanes in a round-robin fashion (first
bit to first lane, second bit to second lane, etc.), as illustrated in Figure 3.20. This approach
enables QPI to achieve very high data rates by implementing the physical link between two
ports as multiple parallel channels.

QPI Link Layer The QPI link layer performs two key functions: flow control and error control.
These functions are performed as part of the QPI link layer protocol, and operate on the level of
the flit (flow control unit). Each flit consists of a 72-bit message payload and

106 CHAPTER3/ATOP-LEVELVIEW OFCOMPUTER


FUNCTIONANDINTERCONNECTION

#2n+1)
#n+1 |
#1
QPI
lane 0

bit stream of flits


• • • #2n+2) #n+2] #2021

|f2a+1|| #2 ]
[ #n+2 || #n+1][ #n ]
#n+1
[ #2 || #1 (

#3n
#2n
#n
QPI lane 19
Figure 3.20 QPI Multilane Distribution

an 8-bit error control code called a cyclic redundancy check (CRC). We discuss error control
codes in Chapter 5.
A flit payload may consist of data or message information. The data flits transfer the actual
bits of data between cores or between a core and an IOH. The message flits are used for such
functions as flow control, error control, and cache coherence. We discuss cache coherence in
Chapters 5 and 17.
The flow control function is needed to ensure that a sending QPI entity does not overwhelma
receiving QPI entity by sending data faster than the receiver can process the data and clear
buffers for more incoming data. To control the flow of data, QPI makes use of a credit
scheme. During initialization, a sender is given a set number of credits to send flits to a
receiver. Whenever a flit is sent to the receiver, the sender decrements its credit counters by one
credit. Whenever a buffer is freed at th e receiver, a credit is returned to the sender for that
buffer. Thus, the receiver controls that pace at which data is transmitted over a QPI link.
Occasionally, a bit transmitted at the physical layer is changed during trans mission, due to
noise or some other phenomenon. The error control function at the link layer detects and
recovers from such bit errors, and so isolates higher layers from experiencing bit errors. The
procedure works as follows for a flow of data from system A to system B:
1. As mentioned, each 80-bit flit includes an 8-bit CRC field. The CRC is a func
tion of the value of the remaining 72 bits. On transmission, A calculates a
CRC value for each flit and inserts that value into the flit.
2. When a flit is received, B calculates a CRC value for the 72-bit payload and
compares this value with the value of the incoming CRC value in the flit. If the
two CRC values do not match, an error has been detected. 3. When B detects an error, it sends a
request to A to retransmit the flit that is
in error. However, because A may have had sufficient credit to send a stream of flits, so that
additional flits have been transmitted after the flit in error and

3.6 / PCI EXPRESS 107

before A receives the request to retransmit. Therefore, the request is for A to back up and
retransmit the damaged flit plus all subsequent flits.

QPI Routing Layer The routing layer is used to determine the course that a packet will
traverse across the available system interconnects. Routing tables are defined by firmware
and describe the possible paths that a packet can follow. In small configurations, such as a two-
socket platform, the routing options are limited and the routing tables quite simple. For larger
systems, the routing table options are more complex, giving the flexibility of routing and
rerouting traffic depending on how (1) devices are popu lated in the platform, (2) system
resources are partitioned, and (3) reliability events result in mapping around a failing resource.

QPI Protocol Layer In this layer, the packet is defined as the unit of transfer. The packet
contents definition is standardized with some flexibility allowed to meet differing market
segment require ments. One key function performed at this level is a cache coherency protocol,
which deals with making sure that main memory values held in multiple caches are
consistent. A typical data packet payload is a block of data being sent to or from a cache.
3.6 PCI EXPRESS

The peripheral component interconnect (PCI) is a popular high-bandwidth, processor-


independent bus that can function as a mezzanine or peripheral bus. Compared with other
common bus specifications, PCI delivers better system perfor mance for high-speed I/O
subsystems (eg, graphic display adapters, network inter
face controllers, and disk controllers).
Intel began work on PCI in 1990 for its Pentium-based systems. Intel soon released all the
patents to the public domain and promoted the creation of an industry association, the PCI
Special Interest Group (SIG), to develop further and maintain the compatibility of the PCI
specifications. The result is that PCI has been widely adopted and is finding increasing use in
personal computer, workstation, and server systems. Because the specification is in the public
domain and is supported by a broad cross-section of the microprocessor and peripheral industry,
PCI prod ucts built by different vendors are compatible.
As with the system bus discussed in the preceding sections, the bus-based PCI scheme has not
been able to keep pace with the data rate demands of attached devices. Accordingly, a new
version, known as PCI Express (PCIe) has been devel oped. PCIe, as with QPI, is a point-to-
point interconnect scheme intended to replace bus-based schemes such as PCI.
A key requirement for PCIe is high capacity to support the needs of higher data rate I/O devices,
such as Gigabit Ethernet. Another requirement deals with the need to support time-dependent
data streams. Applications such as video-on demand and audio redistribution are putting real-
time constraints on servers too. Many communications applications and embedded PC
control systems also pro cess data in real-time. Today's platforms must also deal with multiple
concurrent

108 CHAPTER3/ATOP-LEVEL VIEWOFCOMPUTER


FUNCTIONANDINTERCONNECTION

transfers at ever-increasing data rates. It is no longer acceptable to treat all data as equal—it
is more important, for example, to process streaming data first since late real-time data is as
useless as no data. Data needs to be tagged so that an I/O system can prioritize its flow
throughout the platform.

PCI Physical and Logical Architecture

Figure 3.21 shows a typical configuration that supports the use of PCIe. A root complex device,
also referred to as a chipset or a host bridge, connects the processor and memory subsystem to
the PCI Express switch fabric comprising one or more PCIe and PCIe switch devices. The root
complex acts as a buffering device, to deal with difference in data rates between I/O controllers
and memory and processor components. The root complex also translates between PCIe
transaction formats and the processor and memory signal and control requirements. The
chipset will typically support multiple PCIe ports, some of which attach directly to a PCIe
device, and one or more that attach to a switch that manages multiple PCIe streams. PCIe links
from the chipset may attach to the following kinds of devices that implement PCIe:
• Switch: The switch manages multiple PCIe streams.
• PCIe endpoint: An I/O device or controller that implements PCIe, such as
a Gigabit ethernet switch, a graphics or video controller, disk interface, or a communications
controller.

Core

PC
e
Gigabit ethernet
Memory

Chipset
PCIe-PCI)
PCIe bridge
Memory

PCIe

PCIe
PCIe
Switch

PCIe
PCIe
Legacy endpoint
PCIe endpoint
PCIe endpoint
PCIe endpoint

Figure 3.21 Typical Configuration Using PCIe

3.6 / PCI EXPRESS 109

Legacy endpoint: Legacy endpoint category is intended for existing designs that have been
migrated to PCI Express, and it allows legacy behaviors such as use of I/O space and locked
transactions. PCI Express endpoints are not permitted to require the use of I/O space at runtime
and must not use locked transactions. By distinguishing these categories, it is possible for a
system designer to restrict or eliminate legacy behaviors that have negative impacts
on system performance and robustness.
• PCIe/PCI bridge: Allows older PCI devices to be connected to PCIe-based
systems.
As with QPI, PCIe interactions are defined using a protocol architecture. The PCIe protocol
architecture encompasses the following layers (Figure 3.22):
· Physical: Consists of the actual wires carrying the signals, as well as circuitry
and logic to support ancillary features required in the transmission and receipt of the 1s and Os.
Data link: Is responsible for reliable transmission and flow control. Data pack ets generated
and consumed by the DLL are called Data Link Layer Packets (DLLPs). Transaction:
Generates and consumes data packets used to implement load/ store data transfer
mechanisms and also manages the flow control of those packets between the two components
on a link. Data packets generated and consumed by the TL are called Transaction Layer Packets
(TLPs).
Above the TL are software layers that generate read and write requests that are transported
by the transaction layer to the I/O devices using a packet-based transaction protocol.

PCIe Physical Layer Similar to QPI, PCIe is a point-to-point architecture. Each PCIe port
consists of a number of bidirectional lanes (note that in QPI, the lane refers to transfer in one
direction only). Transfer in each direction in a lane is by means of differential signal ing over a
pair of wires. A PCI port can provide 1,4,6, 16, or 32 lanes. In what follows, we refer to the
PCIe 3.0 specification, introduced in late 2010.
As with QPI, PCIe uses a multilane distribution technique. Figure 3.23 shows an example for a
PCIe port consisting of four lanes. Data are distributed to the four
Transaction layer packets (TLPs)
Transaction
Transaction

Data link layer packets (DLLPs)


Data link
Data link

Physical
Physical

Figure 3.22 PCIe Protocol Layers


110
B4
BO
128b/
130b
PCIe
lane 0
byte stream
B5 || B1
128b/
130b
PCIe
lane 1
B7
B6
B5
B4
B3
B2
B1
BO
... | 87 B5 B5 | BIB3 | B2 | B1 BOK
B6 || B2
128b/
130b
PCIe
lane 2
B7
B3
128b/
130b
PCIe
lane 3
Figure 3.23 PCIe Multilane Distribution

3.6 / PCI EXPRESS 111

lanes 1 byte at a time using a simple round-robin scheme. At each physical lane, data are
buffered and processed 16 bytes (128 bits) at a time. Each block of 128 bits is encoded into a
unique 130-bit codeword for transmission; this is referred to as 128b/130b encoding. Thus,
the effective data rate of an individual lane is reduced by a factor of 128/130.
To understand the rationale for the 128b/130b encoding, note that unlike QPI, PCIe does not use
its clock line to synchronize the bit stream. That is, the clock line is not used to determine the
start and end point of each incoming bit; it is used for other signaling purposes only. However, it
is necessary for the receiver to be syn chronized with the transmitter, so that the receiver knows
when each bit begins and ends. If there is any drift between the clocks used for bit transmission
and reception of the transmitter and receiver, errors may occur. To compensate for the possibil
ity of drift, PCIe relies on the receiver synchronizing with the transmitter based on the
transmitted signal. As with QPI, PCIe uses differential signaling over a pair of wires.
Synchronization can be achieved by the receiver looking for transitions in the data and
synchronizing its clock to the transition. However, consider that with a long string of 1s or Os
using differential signaling, the output is a constant voltage over a long period of time. Under
these circumstances, any drift between the clocks of transmitter and receiver will result in loss
of synchronization between the two.
A common approach, and the one used in PCIe 3.0, to overcoming the prob lem of a long string
of bits of one value is scrambling. Scrambling, which does not increase the number of bits to be
transmitted, is a mapping technique that tends to make the data appear more random. The
scrambling tends to spread out the num ber of transitions so that they appear at the receiver more
uniformly spaced, which is good for synchronization. Also, other transmission properties, such
as spectral properties, are enhanced if the data are more nearly of a random nature rather than
constant or repetitive. For more discussion of scrambling, see Appendix E.
Another technique that can aid in synchronization is encoding, in which add itional bits are
inserted into the bit stream to force transitions. For PCIe 3.0, each group of 128 bits of input is
mapped into a 130-bit block by adding a 2-bit block sync header. The value of the header is 10
for a data block and 01 for what is called an ordered set block, which refers to a link-level
information block.
Figure 3.24 illustrates the use of scrambling and encoding. Data to be trans mitted are fed into a
scrambler. The scrambled output is then fed into a 128b/130b encoder, which buffers 128 bits
and then maps the 128-bit block into a 130-bit block. This block then passes through a parallel-
to-serial converter and transmitted one bit at a time using differential signaling.
At the receiver, a clock is synchronized to the incoming data to recover the bit stream. This
then passes through a serial-to-parallel converter to produce a stream of 130-bit blocks. Each
block is passed through a 128b/130b decoder to recover the original scrambled bit pattern, which
is then descrambled to produce the original bit stream.
Using these techniques, a data rate of 16 GB/s can be achieved. One final detail to mention; each
transmission of a block of data over a PCI link begins and ends with an 8-bit framing sequence
intended to give the receiver time to synchro nize with the incoming physical layer bit stream.
112 CHAPTER3/ATOP-LEVEL VIEWOFCOMPUTER
FUNCTIONANDINTERCONNECTION

D+
D

Scrambler
Differential
receiver

1b
Clock recovery
circuit

128b/130b Encoding
Data recovery
circuit

1b
130b

Serial to parallel
Parallel to serial

130b

Transmitter differential
driver
128b/130b decoding

128b

Ꭰ+
D
Descrambler
(a) Transmitter
8b

(b) Receiver

Figure 3.24 PCIe Transmit and Receive Block Diagrams

PCIe Transaction Layer The transaction layer (TL) receives read and write requests from
the software above the TL and creates request packets for transmission toa destination via
the link layer. Most transactions use a split transaction technique, which works in the follow ing
fashion. A request packet is sent out by a source PCIe device, which then waits for a response,
called a completion packet. The completion following a request is initiated by the completer only
when it has the data and/or status ready for delivery. Each packet has a unique identifier that
enables completion packets to be directed to the correct originator. With the split transaction
technique, the completion is sep arated in time from the request, in contrast to a typical bus
operation in which both sides of a transaction must be available to seize and use the bus.
Between the request and the completion, other PCIe traffic may use the link.
TL messages and some write transactions are posted transactions, meaning that no response
is expected.
The TL packet format supports 32-bit memory addressing and extended 64-bit memory
addressing. Packets also have attributes such as “no-snoop,”

3.6 / PCI EXPRESS 113

"relaxedordering," and "priority,” which may be used to optimally route these packets through
the I/O subsystem. ADDRESS SPACES AND TRANSACTION TYPES The TL supports four
address spaces: - Memory: The memory space includes system main memory. It also includes
PCIe I/O devices. Certain ranges of memory addresses map into I/O devices.
· 10: This address space is used for legacy PCI devices, with reserved memory
address ranges used to address legacy I/O devices.
• Configuration: This address space enables the TL to read/write configuration
registers associated with I/O devices. Message: This address space is for control signals related
to interrupts, error
handling, and power management. Table 3.2 shows the transaction types provided by the TL.
For memory, I/O, and configuration address spaces, there are read and write transactions. In the
case of memory transactions, there is also a read lock req uest function. Locked operations
occur as a result of device drivers requesting atomic access to registers on a PCIe device. A
device driver, for example, can atomically read, modify, and then write to a device register. To
accomplish this, the device driver causes the processor to execute an instruction or set of
instructions. The root complex converts these pro cessor instructions into a sequence of PCIe
transactions, which perform individual read and write requests for the device driver. If these
transactions must be executed atomically, the root complex locks the PCIe link while executing
the transactions. This locking prevents transactions that are not part of the sequence from occur
ring. This sequence of transactions is called a locked operation. The particular set

Purpose

Transfer data to or from a location in the system memory map.

I/O
Transfer data to or from a location in the system memory map for legacy devices.
Table 3.2 PCIe TLP Transaction Types
Address Space
TLP Type
Memory Read Request Memory
Memory Read Lock Request Memory Write Request
I/O Read Request I/O Write Request Config Type 0 Read Request
Config Type O Write Request Configuration
Config Type 1 Read Request Config Type 1 Write Request
Message Request Message
Message Request with Data
Completion Memory, I/O,
Completion with Data Configuration Completion Locked
Completion Locked with Data
Transfer data to or from a location in the configura tion space of a PCIe device.

Provides in-band messaging and event reporting.

Returned for certain requests.

114 CHAPTER3/ATOP-LEVEL VIEWOFCOMPUTER


FUNCTIONANDINTERCONNECTION

of processor instructions that can cause a locked operation to occur depends on the system chip
set and processor architecture.
To maintain compatibility with PCI, PCIe supports both Type 0 and Type 1 con figuration
cycles. A Type 1 cycle propagates downstream until it reaches the bridge interface hosting the
bus (link) that the target device resides on. The configuration transaction is converted on the
destination link from Type 1 to Type O by the bridge.
Finally, completion messages are used with split transactions for memory, 1/0, and
configuration transactions. TLP PACKET ASSEMBLY PCIe transactions are conveyed
using transaction layer packets, which are illustrated in Figure 3.25a. A TLP originates in the
transaction layer of the sending device and terminates at the transaction layer of the receiving
device.

Number of octets
STP framing
Start

23 Sequence number
DLLP
Created
by DLL
Appended by PL
CRC

12 or 16
Header
End
Created by Transaction Layer
Appended by Data Link Layer
Appended by Physical Layer
0 to 4096
Data

0 or
41
ECRC

LCRC

STP framing

(b) Data Link Layer Packet


(a) Transaction Layer Packet Figure 3.25 PCIe Protocol Data Unit Format

3.6 / PCI EXPRESS 115

Upper layer software sends to the TL the information needed for the TL to create the core of the
TLP, which consists of the following fields:
• Header: The header describes the type of packet and includes information
needed by the receiver to process the packet, including any needed routing information. The
internal header format is discussed subsequently. Data: A data field of up to 4096 bytes may be
included in the TLP. Some TLPs
do not contain a data field.
· ECRC: An optional end-to-end CRC field enables the destination TL layer to
check for errors in the header and data portions of the TLP.

PCIe Data Link Layer The purpose of the PCIe data link layer is to ensure reliable delivery of
packets across the PCIe link. The DLL participates in the formation of TLPs and also trans
mits DLLPs.

DATA LINK LAYER PACKETS Data link layer packets originate at the data link layer of a
transmitting device and terminate at the DLL of the device on the other end of the link.
Figure 3.25b shows the format of a DLLP. There are three important groups of DLLPs used in
managing a link: flow control packets, power management packets, and TLP ACK and NAK
packets. Power management packets are used in managing power platform budgeting. Flow
control packets regulate the rate at which TLPs and DLLPs can be transmitted across a link. The
ACK and NAK packets are used in TLP processing, discussed in the following paragraphs.

TRANSACTION LAYER PACKET PROCESSING The DLL adds two fields to the core of the
TLP created by the TL (Figure 3.25a): a 16-bit sequence number and a 32-bit link-layer CRC
(LCRC). Whereas the core fields created at the TL are only used at the destination TL, the two
fields added by the DLL are processed at each intermediate node on the way from source to
destination.
When a TLP arrives at a device, the DLL strips off the sequence number and LCRC fields and
checks the LCRC. There are two possibilities:
1. If no errors are detected, the core portion of the TLP is handed up to the local
transaction layer. If this receiving device is the intended destination, then the TL processes the
TLP. Otherwise, the TL determines a route for the TLP and passes it back down to the DLL
for transmission over the next link on the way
to the destination.

2. If an error is detected, the DLL schedules an NAK DLL packet to return back
to the remote transmitter. The TLP is eliminated.
When the DLL transmits a TLP, it retains a copy of the TLP. If it receives an NAK for the
TLP with this sequence number, it retransmits the TLP. When it receives an ACK, it discards
the buffered TLP.

Anda mungkin juga menyukai