Tentang pengoperasian PC menggunakan contoh Windows 10 dan keyboard bagian 2

Pada bagian ini, kita akan mempertimbangkan ke arah mana informasi tentang tombol yang ditekan dari keyboard ke CPU berjalan, akan ada banyak gambar dan ini bukan bagian terakhir. Saya akan membicarakan hal ini dari sudut pandang seorang programmer yang menulis dalam mode pengguna - program pengguna, web, aplikasi seluler - karena itu, mungkin ada ketidakakuratan. Orang yang terlibat dalam elektronik tidak mungkin menemukan sesuatu yang bermanfaat bagi diri mereka sendiri. Bagian pertama ada di sini .


Masalah pendidikan programmer yang lebih tinggi adalah bahwa siswa belajar secara rinci aspek-aspek individual yang diambil di luar konteks tanpa memahami bagaimana semua ini cocok bersama. Beberapa semester matematika yang lebih tinggi untuk memahami fisika, untuk memahami teknik elektro, peralatan listrik, assembler, OS, algoritma, pemrograman sistem dan banyak mata pelajaran lain diubah menjadi program lima tahun standar. Banyaknya detail dan tidak ada yang menjelaskan bagaimana ini cocok dengan gambaran besar, diasumsikan bahwa setelah 5 tahun siswa akan mengikatnya di kepalanya sendiri, dan kemudian ia akan bekerja dengan .Net dan tidak akan pernah menyentuh mode elektronik dan kernel. Saya percaya bahwa tidak perlu mengetahui secara terperinci tentang pengoperasian komputer, cukup untuk memiliki pemahaman umum tentang apa yang terjadi di tumpukan teknologi. Jika orang-orang yang menyusun program pelatihan untuk universitas membuka sekolah mengemudi,Anda akan belajar bahasa Rusia, kaligrafi, dan hidrodinamika, karena Anda perlu berkomunikasi dengan inspektur, mengganti cairan, dan menulis catatan penjelasan. Akan ada beberapa ketidakakuratan dalam artikel ini, sehingga tidak akan cocok untuk lulus ujian dalam mata pelajaran khusus, tetapi setelah itu akan lebih mudah untuk memahami perangkat PC.

Di bawah lalu lintas kucing.

Tombol keyboard adalah tombol yang menutup kontak dan arus listrik melewatinya. Mekanisme penutupan / pembukaan dibuat sedemikian rupa sehingga tombol tidak harus ditekan sepenuhnya, karena jika tidak, jari-jari akan cepat menjadi lelah dan keyboard akan menjadi tidak ergonomis. Pada bagian, kuncinya terlihat seperti ini. Di sisi kanan adalah kontak yang menerapkan tegangan.


"Otak" dari keyboard yang dapat menentukan keystroke adalah mikrokontroler , yang pada dasarnya adalah komputer mini dengan program yang memeriksa setiap tombol dengan memberikan voltase padanya dan jika melewati maka tombol tersebut ditekan. Kaki-kaki mikrokontroler memiliki nama sendiri dan dapat diakses dalam kode, mereka digunakan untuk berkomunikasi dengan dunia luar. Kaki dapat mengontrol operasi mikrokontroler, melaporkan status chip atau melayani untuk membaca / mentransmisikan data.
Program ( firmware ) dapat ditulis dalam C atau assembler, itu diunggah ke mikrokontroler melalui programmer . Ini adalah perangkat dengan konektor untuk memasang mikrokontroler dan dapat dihubungkan ke komputer melalui USB, yang digunakan perangkat lunak khusus. Inilah yang tampak seperti programmer dalam kehidupan nyata:
Melalui program ini, masing-masing kaki dapat diatur atau diukur tegangannya. Algoritma untuk menemukan tombol yang ditekan adalah untuk memberikan tegangan ke satu kaki dan mengukurnya di kaki lainnya, dan jika kunci ditekan, maka kaki kedua akan memiliki volt yang sama dengan input. Jadi dalam loop tak terbatas semua kunci diperiksa. Sebagai aturan, keyboard memiliki tombol 80-110, dan pengontrol kontak (pin) jauh lebih kecil. Oleh karena itu, mereka menggunakan pendekatan seperti "matriks keyboard" - semua tombol didistribusikan dalam kolom dan baris, dan algoritme dikurangi menjadi menemukan kolom yang memotong baris di mana tegangan diterapkan oleh program. Kolom / korespondensi baris dengan kontak disorot di sini.


Pada kenyataannya, matriksnya mungkin terlihat seperti ini. Di sebelah kiri adalah industri dan di sebelah kanan adalah buatan sendiri.


Pada pseudo-code, bagian dari program firmware yang menentukan tombol yang ditekan dapat terlihat seperti ini.

for (int i = 0; i < COLSC; i++) {
 	SetPower(columns[i], 3.0 f);
  	for (int j = 0; j < ROWSC; j++) {
    		float power = GetPower(rows[j]);
    		if (power >= 3.0f - THRESHOLD) {
      			BYTE key = keys[i, j];
      			SendKey(key);
    		}
  	}
}

Setiap tombol terkait dengan kode pindai, standar dan merupakan nomor 8-bit, mis. satu byte. Oleh karena itu, ketika tombol Y ditekan, pengontrol keyboard harus mengirim nomor 21 (0x15), dan ketika dilepaskan - 149 (0x95). Bagaimana pengiriman dilakukan? Tentunya Anda bekerja dengan JSON, layanan web, atau mengirim data antar proses dan Anda tahu bahwa untuk mengirim data, Anda perlu membuat serial , mis. berubah menjadi array byte atau teks yang diformat yang dapat deserialize penerima , yaitu membuat ulang objek di ruang alamatnya. Dan apa yang bisa membuat cerita bersambung data pada tingkat rendah? Kami hanya perlu mentransfer 1 byte (8 bit). Ke depan, saya akan mengatakan bahwa kami akan mengirimkan data sedikit demi sedikit.

Dalam matematika, ada rumus yang dapat mengubah angka desimal apa pun yang kita kenal menjadi urutan nol dan satu dan sebaliknya. Formula ini telah menemukan aplikasi dalam teknologi komputer. Pada bagian pertama, saya dengan santai menyebutkan bahwa teknologi analog mengeksploitasi hukum fisika, sementara digital bekerja pada level nol dan satu. Ini berarti bahwa telepon analog mengkodekan seluruh spektrum suara manusia ke dalam urutan gelombang elektromagnetik, dan telepon digital menggunakan microchip yang mengubah suara manusia menjadi data digital, misalnya, dalam file WAV, dan kemudian mentransfernya dalam urutan nol dan yang dalam bentuk gelombang elektromagnetik. Hanya dalam kasus ini, alih-alih seluruh spektrum suara, hanya dua nilai yang harus diwakili - 0 dan 1. Mereka dapat diwakili oleh gelombang dengan panjang yang berbeda, voltase berbeda,pulsa cahaya melalui serat optik, garis-garis hitam dan putih di atas kertas, lubang pada kartu punch.

Kode pindaian dari tombol Y yang ditekan dalam biner terlihat seperti 0001 0101. Kami akan mengirimkannya sepanjang kaki mikrokontroler yang bertanggung jawab atas data ( DATA ). Unit logis adalah 3.3V atau lebih tinggi, nol logis- Tegangan sekitar 0V. Inilah tangkapannya - bagaimana cara melewati tiga nol berturut-turut? Untuk melakukan ini, kita memerlukan leg kedua yang kita sebut CLOCK, ketika di atasnya satu berarti sesi transmisi satu bit telah dimulai, dan nol telah berakhir. Perubahan nilai (voltase) seperti itu akan terjadi dengan interval waktu tertentu, katakanlah 50 nanodetik, karena di ujung yang lain ada mikrokontroler kedua yang bekerja dengan kecepatannya sendiri dan mendengarkan kaki-kaki di mana CLOCK dan DATA terhubung dalam loop tanpa akhir. Dalam contoh ini, saya akan menganggap bahwa keyboard terhubung melalui konektor PS2, yang ditunjukkan di bawah ini. Melalui port USB, algoritma transfer akan berbeda. Seperti yang Anda lihat, port PS2 memiliki pin yang disebut Data, Clock.Selain itu, ada juga kontak melalui mana pengontrol port PS2 mendistribusikan tegangan 5V yang diperlukan untuk operasi ke keyboard dan kontak tanah, yang hanya ditampilkan pada badan keyboard. Kontak lain tidak digunakan.
Port PS / 2 disebut bus serial , karena mengirimkan bit satu per satu (urutan bit). Port paralel mentransmisikan data sekaligus ke beberapa kontak dan dapat mentransfer misalnya satu byte (8 bit) sekaligus untuk satu sesi transfer data.

Apa perbedaan antara port, bus, dan protokol? Bus, seperti port, adalah sekumpulan kontak (perkabelan) dan kesepakatan tentang cara menggunakannya, hanya port yang memiliki koneksi untuk menghubungkan perangkat eksternal, dan bus digunakan untuk mengkomunikasikan komponen pada motherboard. Port pada dasarnya adalah sebuah bus dengan konektor di tengah. Protokol adalah interaksi melalui kontak. Dalam contoh dengan PS / 2, ini adalah urutan transfer data melalui Clock dan kontak Data.

Sebelumnya, mikrokontroler Intel 8042 sangat umum dan digunakan baik di keyboard maupun sebagai pengontrol port PS2, mis. dua chip identik bertukar data. Driver port PS2 di Windows disebut 8042prt.sys.

Sebenarnya, kami mengirimkan bukan 8 bit, tetapi 11, karena data ditransmisikan sebagai paket data atau pesan . Tambahan 3 bit menunjukkan awal dan akhir data - satu nol di awal dan 0 1 di akhir, seperti protokol untuk mentransfer data dari perangkat ke host di PS2. Ini mungkin terlihat seperti fungsi SendKey dalam pseudo-code, jika Anda lebih suka memahami kode tersebut. Ini mengirim data tentang tombol yang ditekan melalui bus PS2.


void SendBit(BYTE bit) {
	float power = (bit != 0) ? 3.3f : 0.0f;
	SetPower(DATA, power);
	SetPower(CLOCK, 3.3f);
	Sleep(50);
	SetPower(CLOCK, 0.0f);
	Sleep(50);
}

void SendData(BYTE data) {
	SendBit(0);
	
	for (BYTE i = 0; i < sizeof(BYTE); i++) {
		BYTE bit = (data >> i) & 1;
		SendBit(bit);
	}

	SendBit(0);
	SendBit(1);
}

Tidak selalu perlu mengatur voltase pada masing-masing kaki secara manual untuk transfer data. Dalam beberapa kasus, nilai yang disimpan dalam register secara otomatis ditampilkan pada kontak.

Pada grafik, transfer data seperti itu akan divisualisasikan sebagai berikut. Waktu di sepanjang sumbu X, tegangan di sepanjang sumbu Y.


Dalam teknologi analog, sinyal dapat terdistorsi, mis. kawat tidak terhubung ke apa pun, tetapi voltmeter menunjukkan 0,5V di atasnya karena ada medan elektromagnetik di dekatnya. Oleh karena itu, konsep ambang tegangan digunakan. Jika tegangan kurang dari ambang batas, maka kita asumsikan bahwa kita mendapat nol logis, jika tidak kesatuan Dengan mempertimbangkan kemungkinan distorsi, kode pindaian dari tombol Y yang ditekan dapat muncul seperti ini:


Sebelum kita melihat lebih dekat bagaimana data dari keyboard sampai ke CPU, mari kita bicara tentang microchip , bus, dan motherboard .

Mikrokontroler dan sirkuit mikro


Mikrokontroler dapat menjalankan program yang dijahitkan ke dalamnya, memiliki memori RAM dalam jumlah tertentu dan tempat untuk menyimpan data dan kode program. Dalam chip, program dapat diatur pada tahap desain. Secara manual membuat rangkaian listrik yang mengimplementasikan suatu algoritma sangat memakan waktu dan oleh karena itu, bahasa pemrograman khusus yang disebut VHDL (Hardware Description Language) dapat digunakan untuk merancang sirkuit mikro . Ini adalah bahasa pemrograman tingkat tinggi yang diterjemahkan ke dalam rencana rangkaian, dijalankan melalui program yang menemukan lokasi optimal elemen radio di papan tulis dan pada akhirnya dibuat dalam bentuk fisik. Gambar hanya untuk tujuan ilustrasi.



Bagaimana data dan perintah diwakili dalam microchip dan mikrokontroler? Dasar dari teknologi komputer adalah sebuah transistor, yang telah dipelajari umat manusia dalam dimensi mikroskopis. Transistor adalah elemen radio yang memiliki tiga kaki: input, output, dan di antara mereka kontrol yang membuka atau menutup arus antara dua kaki. Gambar di bawah menggambarkan operasi transistor, air menggambarkan arus.


Tegangan diterapkan ke kaki input, jika kontrol memiliki tegangan, maka arus beralih ke output, jika tidak akan ada 0V. Memiliki 8 transistor, yang masing-masing memiliki LED yang terhubung ke kaki output yang menyala atau tidak, kita dapat membayangkan 256 kombinasi unik (2 pangkat 8). Lapochki ditafsirkan dari kanan ke kiri, serta angka desimal. Digit yang lebih rendah ada di sebelah kanan.
Itu satu bola lampu mewakili satu bit informasi (0 atau 1), dan delapan bola lampu tersebut sesuai dengan satu byte. Dimungkinkan untuk membangun operator logis DAN, ATAU, TIDAK, XOR pada transistor.


Misalnya, dalam sirkuit operator AND (di sebelah kiri pada gambar di atas), output hanya akan memiliki tegangan jika kedua tegangan input tidak nol. Seseorang telah menemukan algoritma untuk penjumlahan, perkalian, pembagian, dan pengurangan berdasarkan pada operasi logis bitwise dan pergeseran bit. Pembuat chip hanya perlu mengimplementasikannya. Operasi algoritma penambahan bitwise diilustrasikan di bawah ini, kami tidak akan menganalisisnya:


Nanotransistor adalah mikroskopis dan dapat ditempatkan di papan dalam jutaan. Prosesor Intel ditunjukkan di bawah ini dan seperti apa kira-kira salah satu dari core-nya. Gambar itu ilustratif.


Mikrokontroler dapat berisi mikrokontroler pada papan yang sama dan dalam kasus yang sama.

Ban


Biasanya, di buku teks, ban ditampilkan sebagai panah tebal, seperti pada gambar di bawah ini. Ini dilakukan agar tidak menarik semua koneksi kontak, yang bisa banyak. Pengoperasian bus PS2 sangat sederhana, yang Anda butuhkan adalah tiga pin. Tetapi ada bus yang, misalnya, memiliki 124 kontak untuk transfer data.



Ada beberapa jenis ban berikut:
  • Data - bit pada kontak ini ditafsirkan sebagai data: angka, simbol, bagian dari gambar atau data biner lainnya. Lebar bus mempengaruhi throughput, jumlah bit yang ditransmisikan per detik
  • Alamat - bit pada pin ini ditafsirkan sebagai alamat fisik dalam memori. Lebar bus ini menentukan kapasitas RAM maksimum yang didukung.
  • — . CPU RAM I/O.
  • . , . ATX 24 Pin 12V PSU Connector, .


Ban dapat terdiri dari substrat , mis. beberapa kontak digunakan untuk data, yang lain untuk alamat, yang lain untuk kontrol dan kontak yang dayanya dikirim. Pendekatan ketika kontak yang sama digunakan secara bergantian untuk mengirimkan data dan alamat disebut multiplexing . Sebagai contoh, prosesor Intel 8086 memiliki data dan bus alamat 20 bit, pada diagram pin, kontaknya ditunjukkan oleh AD0-AD19 (kaki 16-2 dan 39-35).


Dalam kasus yang lebih kompleks, kami mungkin memiliki beberapa sirkuit mikro yang terhubung ke kontak yang sama. Untuk komunikasi normal, mereka memerlukan chip tambahan yang akan menentukan siapa yang pada titik waktu dapat menggunakannya, itu disebut pengendali bus. Pada gambar di bawah ini, sebuah bus bulat dalam ruang hampa: empat mikrokontroler identik mengirimkan data ke mikrokontroler konsumen melalui pengontrol bus. Kabel merah adalah tegangan yang didistribusikan oleh pengendali bus ke semua chip yang terhubung dengannya. Data ditransmisikan melalui kabel hijau dan "negosiasi" dengan pengendali bus dilakukan, dan kabel biru adalah Jam, di mana pengendali bus menyinkronkan komunikasi pengendali, karena mereka dapat beroperasi pada kecepatan yang berbeda. Jika unit logis ada di kabel biru, maka chip yang berhak menggunakan bus dapat melakukan satu tindakan interaksi dengan dunia luar - baca sedikit, misalnya.


Pengontrol bus dapat dianggap sebagai komponen integral, karena komunikasi dengan dunia luar akan melewatinya dan berapa banyak chip atau perangkat eksternal nyata yang ada di bus tidak penting. Untuk transfer data, motherboard memiliki jaringan bus yang luas. Terlepas dari kenyataan bahwa ada banyak set chip, sebagian besar mereka mengikuti tata letak yang khas, karena semua perangkat yang terhubung ke motherboard dibagi menjadi:
  • Lambat - keyboard, hard drive, kartu jaringan, audio, dll.
  • Cepat - CPU, RAM, GPU.
Berdasarkan divisi ini, motherboard memiliki dua chip utama - South Bridge , yang mengoordinasikan kerja semua perangkat lambat, dan North Bridge, untuk koordinasi perangkat cepat. Di komputer modern, Northbridge terletak di CPU itu sendiri, dan Southbridge dapat disebut Platform Controller Hub, tetapi ini tidak mengubah esensinya. Kedua jembatan ini saling terhubung oleh sebuah bus di mana mereka saling menginformasikan tentang peristiwa penting. Yang menarik adalah generator jam di mana prosesor, RAM dan kartu grafis menyinkronkan pekerjaan mereka, kabel biru yang sama. Overclockingini pada dasarnya mengubah pengaturan BIOS sehingga sinkronisasi lebih sering terjadi, sedangkan perangkat keras, terutama CPU, akan lebih panas, mengkonsumsi lebih banyak daya dan lebih cepat mengembangkan sumber dayanya. Yang sebaliknya adalah underclocking , ketika kecepatan berkurang untuk menghemat daya baterai atau mengurangi kebisingan.

Chipset adalah seperangkat chip yang semuanya dirancang untuk saling bekerja. Mereka menyediakan komunikasi antara komponen pada motherboard dan menyediakan fungsionalitas seperti timer. Set chip hanya bekerja dengan satu merek prosesor, AMD tidak dapat dimasukkan ke motherboard dengan chipset Intel, mereka bahkan memiliki kontak yang berbeda. Diagram motherboard disajikan di bawah ini:
Ingin contoh enkapsulasi perangkat keras? Chipset Intel memiliki chip yang disebut Super IO , ditunjukkan pada gambar di bawah dan terhubung ke Jembatan Selatan melalui bus LPC. LPC adalah nama pintar untuk kabel CLOCK, DATA, VCC (POWER). Chip ini berisi emulasi semua chip lama yang pernah digunakan untuk periferal, termasuk chip 8042 yang digunakan untuk port PS2. Ada juga emulator pengontrol port untuk Floppy dan peninggalan lain yang mengganggu kemajuan. Dalam diagram umum motherboard, Super IO dan LPC bus ditunjukkan di atas .


Port PS2 modern terhubung langsung ke chip Super I / O. Hijau adalah keyboard, ungu adalah mouse. Sebelumnya, terhubung ke mikrokontroler Intel 8042.


Motherboard terbuat dari dielektrik, mis. bahan yang tidak melakukan arus. Arus hanya dapat melewati garis yang dicetak di papan tulis. Motherboard memiliki banyak lapisan, yang masing-masing memiliki kontak sendiri dicetak dan oleh karena itu jika Anda mengebor motherboard di mana garis-garis tidak terlihat, Anda dapat merusaknya dengan merusak kontak yang tidak terlihat di dalam papan. Sekarang Anda dapat melihat lebih dekat proses distribusi data dari PS2 ke CPU.

Jalan dari PS2 ke prosesor


Biasanya, arsitektur komputer dipertimbangkan pada prosesor 8086. Di satu sisi, ini benar, karena cukup sederhana dibandingkan dengan CPU modern, dan di sisi lain, itu salah, karena sudah tua dan tidak mencerminkan arsitektur mesin modern. Intel 8086 tidak memerlukan jembatan apa pun, karena sangat lambat sehingga dapat bekerja dengan periferal pada satu bus, mis. pada satu frekuensi. Saya tidak tahu set CPU dan chip modern, jadi saya akan menjelaskannya pada yang fiktif yang menyerupai yang asli. Dalam contoh saya, akan ada CPU fiksi yang sangat mirip dengan Intel 8086. Chip Super IO memiliki lebih dari seratus kontak dan ada dokumentasi di Internet, tetapi saya tidak melihat titik memilah mana pin keyboard dan LPC bus yang sebenarnya digunakan untuk berkomunikasi dengan South Bridge. Hal utama adalah prinsip, yang dapat diimplementasikan dengan cara yang berbeda.

Mari kita lihat gambar untuk mengingat bahwa kita telah berlalu. Panah hijau menunjukkan jalur yang akan kita ambil.


Jadi, data dari keyboard telah datang ke pengontrol port PS2, yang dulunya merupakan chip Intel 8042, dan sekarang ditiru oleh chip Super IO. Dan sekarang mari kita menganalisis tindakan lebih lanjut pada motherboard fiktif saya dengan CPU fiksi. Pengontrol PS2 menerima kode pindaian dari tombol Y yang ditekan dan sekarang memasok tegangan ke sinyal kontak (garis ungu, lihat gambar di bawah) di mana pengontrol interupsi yang dapat diprogram harus memberi tahu tentang data dari keyboard. Sinyal ini ditransmisikan dari satu chip ke chip lain sampai North Bridge meneruskannya ke manajer interupsi.


Programmable Interrupt Controller adalah chip Intel 8259 di mana 8 kaki (namanya IRQ0-IRQ7) dicadangkan untuk menerima pemberitahuan dari port tertentu ( I nterrupt R e Q uest uest). Keyboard diikatkan ke pin IRQ1, IRQ7 ke printer, Floppy disk ke beberapa pin, kartu suara, port paralel dan lain - lain . Tentu saja, bisa ada lebih dari delapan perangkat, jadi teknik seperti cascading digunakan ketika PIC serupa lainnya terhubung ke kaki dengan nama IRQ2, di mana penghitungannya tidak dimulai dari 0, tetapi 7. Mouse diikat ke IRQ12, mis. kaki IRQ5 pada PIC kedua.

Pengontrol interupsi sekarang harus memberi tahu CPU acara di keyboard. Ini terjadi sebagai berikut:
  1. INT (Interrupt) , INTR (Interrupt Request) . CPU , , .. . , . exception .
  2. INTR, .
  3. ( D0-D7) , . PIC ( IRQ).

    , ? . . — (x, y, z, w). .
  4. CPU AD0-AD7 , . IDT (Interrupt Descriptior Table) , , . CPU .

    . . , IDT C# .

    struct IDT_entry{
    	unsigned short int offset_lowerbits;
    	unsigned short int selector;
    	unsigned char zero;
    	unsigned char type_attr;
    	unsigned short int offset_higherbits;
    };
     
    struct IDT_entry IDT[256];
    
  5. , INTA (Interrupt Acknowledged).

Handler interrupt keyboard dalam kode paling sederhana akan terlihat seperti ini. Itu memanggil perintah yang menandakan selesainya pemrosesan interupsi, mis. mengirimkan sinyal ke kaki INTA.

void irq1_handler(void) {
	  outb(0x20, 0x20); //EOI
}

Anda dapat mempelajari lebih lanjut tentang bagaimana tabel vektor interupsi dikonfigurasi pada osdev .

Sekarang kita tahu bagaimana interupsi terjadi, tetapi kita tidak tahu bagaimana penangan interupsi membaca informasi tentang tombol yang ditekan. Dari sudut pandang perangkat lunak, port PS2 adalah dua register, hanya saja mereka tidak diakses oleh nama atau alamat dalam memori dengan jumlah port I / O . Dua register byte tunggal ini ditugaskan untuk port 0x60 dan 0x64, yang pertama (0x60) akan berisi kode pindai kunci. Port kedua digunakan untuk mentransfer status dan perintah ke port PS2 (bukan keyboard!). Set instruksi arsitektur x86 memiliki perintah IN storeTo , fromPortNumyang membaca nilai dari port I / O yang ditentukan ke dalam register yang ditentukan. Misalnya DALAM AL, 0x60 akan menyimpan data dari keyboard ke register AL. Ini mungkin bekerja seperti ini:

  1. Dalam prosesor yang kami pertimbangkan ada kaki AD0-AD20, mereka dapat digunakan untuk menunjukkan alamat dan data. Ini adalah bus data dan bus alamat. Selain itu, ada sejumlah kaki kontrol, misalnya, pin No. 28 (S2), yang nilainya akan menunjukkan jembatan utara di mana pembacaan akan berlangsung - dari memori atau perangkat input / output. Perintah IN menetapkan nilai di sini berbicara tentang perangkat I / O.
  2. CPU (- AD0-AD20) 0110 0000, 0x60. CPU , . , - , - . 0x60 SuperIO , - .
  3. Super IO . 0x60 PS2, .
  4. . Intel 8042, SuperIO, LPC , . .. , .
  5. CPU (- 8 AD0-AD20).
  6. CPU AL. .

Seluruh algoritma ini bekerja pada skala nanosecond dan karena itu berjalan hampir seketika, meskipun prosesor menghabiskan waktu menunggu operasi I / O.

Seperti yang Anda sekarang mengerti membaca dari perangkat eksternal, bahkan seperti memori RAM dengan sebagainya. CPU agak lambat. Kelambatan ini dapat diketahui dengan menulis sebuah program yang mencetak 10.000 baris dalam file baris demi baris, alih-alih menyalinnya ke buffer dan menyimpannya segera. Hard drive terhubung ke South Bridge dan di dalamnya ada juga controller yang mengontrol penempatan data secara langsung.

RAM terhubung ke CPU melalui bus dan membaca darinya membutuhkan waktu. Untuk mempercepat CPU, ia memiliki cache, mis. Area di mana transistor terletak mewakili data yang akan segera dibutuhkan atau sering digunakan, bacaan mereka jauh lebih cepat daripada dari papan RAM, yang berkomunikasi dengan CPU melalui North Bridge. RAM disebut Dynamic Random Access Memory , karena kapasitor digunakan untuk merepresentasikan data di dalamnya. Kapasitor adalah elemen radio yang, seperti baterai, dapat mengisi daya untuk sementara waktu hingga benar-benar habis. Hanya di sini pembuangan terjadi dengan sangat cepat. Oleh karena itu, kapasitor harus diisi ulang, ini terjadi secara instan, itu sudah cukup untuk menerapkan tegangan. Kapasitor yang diisi daya - logis 1, jika tidak, 0. Untuk memori cache digunakanRAM statis mis. tidak perlu diisi ulang dan karena itu bekerja lebih cepat, tetapi lebih mahal. Cache dibagi menjadi 3 level, yang diperiksa secara berurutan selama pencarian data yang diminta sebelum prosesor mengakses RAM. Pada prosesor yang lebih lama, cache level pertama (L1) adalah bagian dari CPU dan bekerja dengannya pada frekuensi yang sama, ketika kedua cache L2 dan L3 adalah chip eksternal. Sekarang mereka semua berada pada chip yang sama dengan prosesor. L1 cache adalah yang tercepat dan terkecil dalam ukuran memori, L2 memiliki lebih banyak memori tetapi lebih lambat. L3 adalah cache terbesar dan paling lambat, sering disebut cache bersama , karena menyimpan data untuk semua core CPU, sedangkan L1 dan L2 dibuat untuk setiap inti individu.

Pada bagian selanjutnya, kita akan berbicara tentang bagaimana Windows menerima dan memproses data yang diterima.

All Articles