Dapatkah CPU berfungsi dengan tidak lebih dari catu daya dan ROM, hanya menggunakan cache internal sebagai RAM?

61

Dapatkah CPU (seperti Intel i3 / i5 / i7 / Xeon) dengan cache cache on-chip menggunakannya sebagai satu-satunya RAM fungsional, tanpa ada bank memori eksternal yang terpasang?

Atau haruskah ada RAM eksternal, dan cache tidak dapat diakses atau digunakan sendiri?

Desktop / server modern CPU sering memiliki lebih banyak RAM cache internal daripada banyak komputer tahun 1990-an di seluruh memori sistem, jadi harus ada cukup banyak di sana untuk menjalankan kode sederhana.

CPU dari sebelum cache ada seperti 6502 tidak akan dapat melakukan apa-apa, karena RAM CPU internal hanya berjumlah beberapa byte untuk penghitung alamat dan akumulator.

Ini bukan masalah menjalankan sistem operasi modern apa pun, tetapi menjalankan kode sederhana yang diprogram ke dalam ROM khusus, atau dimasukkan dengan tangan dengan keypad input hex.

Dale Mahalko
sumber
1
Seluruhnya tergantung pada CPU dan apa yang Anda maksud dengan "cache" karena beberapa CPU memiliki ram mereka sendiri dan tidak memerlukan chip eksternal.
PlasmaHH
42
pada dasarnya, jika Anda memasukkan memori yang dapat dialamatkan ke dalam prosesor itu sendiri, Anda membangun apa yang kita sebut mikrokontroler. Ini ada.
Marcus Müller
1
Siapa bilang Anda butuh RAM sama sekali?
Chris Stratton
1
Tergantung pada bagaimana Anda mendefinisikan "fungsi". Saya yakin i7 sangat mampu menghasilkan panas dengan hanya baterai yang terhubung.
Dmitry Grigoryev
2
Ada beberapa hal yang dapat Anda lakukan hanya dengan beberapa register dan tidak ada RAM tambahan. Misalnya, generator fungsi.
David Schwartz

Jawaban:

67

Lihat akun yang sangat terperinci ini dari urutan boot PC: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

Karena tidak ada DRAM yang tersedia pada saat ini, kode awalnya beroperasi di lingkungan tanpa tumpukan. Sebagian besar prosesor modern memiliki cache internal yang dapat dikonfigurasi sebagai RAM untuk menyediakan tumpukan perangkat lunak. Pengembang harus menulis kode yang sangat ketat saat menggunakan fitur cache-as-RAM ini karena penggusuran tidak akan dapat diterima oleh sistem pada saat ini dalam urutan boot; tidak ada memori untuk mempertahankan koherensi. Itu sebabnya prosesor beroperasi dalam "No Evict Mode" (NEM) pada saat ini dalam proses boot, ketika mereka beroperasi berdasarkan cache-as-RAM. Di NEM, kesalahan cache-line di prosesor tidak akan menyebabkan penggusuran. Mengembangkan kode dengan tumpukan perangkat lunak yang tersedia jauh lebih mudah, dan kode inisialisasi sering melakukan pengaturan minimal untuk menggunakan tumpukan bahkan sebelum inisialisasi DRAM.

Anda dapat mengamati ini dengan menjalankan PC tanpa RAM: itu akan memainkan serangkaian bip. Program yang memainkannya dijalankan dari BIOS Flash ROM.

Saya juga melihat perilaku ini pada beberapa prosesor ARM. Akan ada register konfigurasi di dalam SoC yang memungkinkan Anda untuk menggunakan cache sebagai RAM sejak awal dalam urutan boot, untuk menjalankan program yang menemukan, menghitung dan mengkonfigurasi DRAM.

pjc50
sumber
1
Mari kita lanjutkan diskusi ini dalam obrolan .
vaxquis
2
Rincian lebih lanjut tentang cara kerja mode "cache-as-ram" (CAR) x86 , dalam jawaban yang menjadikannya sebagai case-use untuk INVD(ketika keluar dari mode CAR, membatalkan cache alih-alih memiliki data yang tidak berguna ditulis ke memori, berpotensi melebihi sesuatu yang berharga).
Peter Cordes
Apa yang salah dengan penggusuran saat DRAM tidak tersedia? Bukankah masalah membaca daripada menulis ke RAM?
Mehrdad
14

Secara umum, memori cache tidak dapat dialamatkan. Suatu program tidak dapat menyimpan atau mengambil data dengan sengaja.

Lior Bilia
sumber
2
+1 Ini adalah jawaban yang sangat cerdik. Sarjana diambil dan pensiun sesuka hati dari akses addressable dari memori utama, dengan cara yang hampir acak.
Ale..chenski
17
Yup, inilah mengapa ini membutuhkan mode khusus (seperti pada jawaban pjc), atau semacam tipu daya khusus. Pilihan lain (selain jawaban yang diterima) mungkin untuk membuat sistem berpikir memiliki DRAM, tetapi memori aktual menulis hanya membuang data, dan membaca menghasilkan semua-nol (atau data aktual dari ROM untuk beberapa wilayah alamat). Selama semua beban mencapai cache, sistem akan berperilaku dengan benar. Cukup IDK tentang bagaimana x86 melakukan booting untuk mengetahui apakah mungkin untuk masuk ke mode panjang 64-bit tanpa perlu cache-flush sungguhan.
Peter Cordes
3
Namun, Skylake CPU dengan di-paket tembolok eDRAM menggunakannya sebagai cache memory-side (antara memory controller dan segala sesuatu yang lain, tidak seperti di Broadwell), sehingga bahkan bisa cache DMA mengakses dari perangkat sistem non-CPU, atau beban CPU / menyimpan ke wilayah memori "yang tidak bisa ditembus" (yang mem-bypass L1 / L2 / L3).
Peter Cordes
3
@PeterCordes Namun jawabannya bukan "tidak" hanya karena diperlukan mode khusus - pertanyaannya adalah apakah mode khusus itu ada.
user253751
1
Pertanyaannya adalah - apa yang terjadi jika Anda menggunakan cache dan memastikan cache tidak pernah hilang atau hilang - menjadi dapat dialamatkan saat ada sesuatu yang ditulis ke alamat dalam RAM yang tidak ada, bukan? Tulisan sebenarnya dijatuhkan di lantai, tetapi bacaan tetap dilayani dari cache?
rackandboneman
9

Meskipun ini tidak secara langsung membahas keluarga prosesor yang ditentukan dalam pertanyaan, skema di bawah ini akan bekerja pada prosesor x86 sebelumnya, jadi ya mungkin untuk beroperasi tanpa RAM atau cache, meskipun pendekatan ini memerlukan beberapa keterampilan pemrograman kreatif.

Kembali pada tahun 1980-an saya menemukan desain untuk penerima radio yang menerjemahkan sinyal waktu MSF yang disiarkan di Inggris. Desain ini menggunakan prosesor Z80 dan hanya memiliki ROM untuk penyimpanan program. Semua pemrosesan dan penyimpanan data dilakukan menggunakan register internal di dalam prosesor. Ini jelas berarti bahwa tidak ada panggilan subrutin karena ada memori yang tersedia untuk menampung tumpukan.

Saat itu biaya RAM tinggi dan karena ini adalah proyek hobi, menjaga biaya menjadi penting, terlepas dari itu menjadi latihan akademis yang menarik. Ini juga sebelum zaman mikrokontroler yang tersedia secara luas (sebuah 8751 dengan biaya lebih dari £ 100 IIRC).

kamu
sumber
Membatasi diri Anda pada data yang dapat disimpan dalam register benar-benar membatasi fungsi berguna yang dapat Anda lakukan. Saya pikir pertanyaannya lebih tentang memori cache dalam prosesor modern.
Mark Ransom
Tentu saja tak usah dikatakan bahwa tidak menggunakan RAM membatasi fungsionalitas yang mungkin. Aplikasi yang dikutip menunjukkan seberapa besar kemungkinan dengan sumber daya penyimpanan data yang sangat terbatas, ujung depan radio, dan layar LCD.
uɐɪ
-3

Biasanya sebuah CPU akan membutuhkan jam eksternal. Tetapi dengan itu, ya itu bisa.

John Hamilton
sumber
1
Akan lebih tepat untuk menjelaskan mengapa dan secara menyeluruh menjawab pertanyaan pengguna. Jawaban ini ada di pihak yang lemah.
Voltage Spike