Apakah status tunggu memori flash?

10

Saya menggunakan mikrokontroler PowerPC freescale. Dalam modul memori flash dalam lembar data, jumlah "status tunggu dari akses memori flash" dapat dikonfigurasi.

Berikut ini adalah bagian dari datasheet yang mengajukan pertanyaan saya, diambil dari deskripsi register dari modul PFlash:

Bidang ini harus disetel ke nilai yang sesuai dengan frekuensi operasi PFlash dan waktu akses baca aktual PFlash. Frekuensi operasi yang lebih tinggi memerlukan pengaturan bukan nol untuk bidang ini untuk operasi Flash yang benar.
0 MHz, <23 MHz, status tunggu diperlukan = 0 ---
23 MHz, <45 MHz, status tunggu diperlukan = 1 ---
45 MHz, <68 MHz, tunggu status yang diperlukan = 2 ---
68 MHz, <90 MHz, status tunggu diperlukan = 3 ---

(PFlash adalah modul pengontrol Platform Flash)

Saya mengerti bahwa prosesor lebih cepat daripada flash, itu sebabnya status tunggu diperkenalkan. Apa yang saya tidak mengerti, adalah: jika prosesor lebih cepat dari flash, maka prosesor adalah yang perlu diperlambat bukan flash, tetapi paragraf di atas mengatakan sebaliknya (atau apakah saya tidak mengerti ini?), Itu mengatakan bahwa jika Pflash dioperasikan dengan frekuensi tinggi, maka kita perlu memperlambatnya dengan menambahkannya status tunggu tambahan !!

Apa yang salah dengan pengertian saya?

Terima kasih

MohamedEzz
sumber
1
Jika saya mengerti benar, adalah controller yang dapat diatur ke kecepatan yang berbeda; jadi harus menunggu bahwa memori Flash yang sebenarnya memiliki data yang tersedia.
clabacchio

Jawaban:

8

Untuk memperkuat jawaban stevenvh, semua jenis logika, ketika diberi sinyal input, akan membutuhkan waktu untuk menghasilkan sinyal keluaran; memori seringkali sangat lambat dibandingkan dengan logika lain. Seringkali, akan ada jaminan bahwa sinyal output akan menjadi valid dalam jumlah waktu tertentu, tetapi hanya itu. Secara khusus, ada kemungkinan bahwa sinyal mungkin berubah beberapa kali dalam interval itu, dan tidak akan ada indikasi, sebelum akhir interval itu, bahwa sinyal telah mencapai nilai "benar" terakhir.

Ketika mikrokontroler atau mikroprosesor biasa membaca byte (atau kata, atau unit apa pun) dari memori, itu menghasilkan alamat dan, beberapa waktu kemudian, melihat output nilai oleh memori dan bertindak berdasarkan itu. Antara waktu controller menghasilkan alamat dan waktu melihat nilai dari memori, itu tidak peduli kapan atau apakah sinyal output dari memori berubah. Di sisi lain, jika sinyal dari memori belum stabil ke nilai akhir pada saat pengontrol melihatnya, pengontrol akan salah membaca memori karena telah menahan nilai apa pun yang sedang dikeluarkan pada saat itu terlihat. Biasanya pengontrol akan melihat nilai dari memori segera setelah siap untuk melakukan sesuatu dengannya, tetapi jika nilai memori tidak siap maka itu mungkin tidak berfungsi. Karena itu, banyak pengendali memiliki opsi untuk menunggu sedikit lebih lama setelah mereka siap memproses data dari memori, untuk memastikan bahwa output dari memori benar-benar valid. Perhatikan bahwa menambahkan penundaan seperti itu akan memperlambat segalanya (controller akan dengan senang hati bertindak berdasarkan data dari memori lebih cepat), tetapi tidak akan memengaruhi kebenaran operasi (kecuali segala sesuatu diperlambat sedemikian rupa sehingga kewajiban waktu lainnya tidak dapat dipenuhi).

supercat
sumber
Bagus! Terima kasih atas detail bermanfaat yang Anda jelaskan!
MohamedEzz
1
@MemoryLeaks: Dengan senang hati. Satu hal penting yang perlu diperhatikan adalah bahwa mengurangi status tunggu di bawah batas yang ditentukan akan menyebabkan sistem berjalan lebih cepat, tetapi membaca dari memori dapat secara sewenang-wenang menghasilkan data yang salah; lebih lanjut, "secara sewenang-wenang menghasilkan data yang salah" dapat berarti "menghasilkan data yang benar sampai perangkat yang Anda desain ada di tangan pelanggan Anda, dan kemudian mulai menghasilkan data yang salah cukup sering membuat pelanggan sangat marah kepada Anda."
supercat
1
Ini tampaknya sangat mirip dengan overclocking, tetapi lebih merupakan opsi yang dapat dikonfigurasi. Mungkin cara yang menarik untuk melakukan overclock MCU.
sherrellbc
1
@ supercat, Satu pertanyaan apa yang dimaksud dengan pengontrol apakah itu prosesor atau pengontrol memori?
Mouin
1
@Mouin: Pengontrol memori jika ada, atau prosesor jika tidak ada.
supercat
9

Status tunggu ditambahkan ke siklus akses memori yang diprakarsai oleh CPU. Jadi memang CPUlah yang harus menunggu Flash yang lebih lambat. Pengontrol memori memberi sinyal "tidak siap" ke CPU untuk sejumlah siklus (0 hingga 3), dan sementara itu CPU tetap dalam kondisi saat ini, yaitu telah menulis alamat Flash, tetapi belum membaca data. Hanya ketika pengontrol memori memberi sinyal "data siap" CPU akan membaca dari bus data dan melanjutkan instruksinya (mengunci data ke register atau ke dalam RAM).

stevenvh
sumber
1
Jadi dengan mengkonfigurasi pengaturan itu, saya memberi tahu pengontrol memori kapan tepatnya memberi sinyal "data siap". Tidak bisakah saya memberi tahu memori untuk memberi sinyal "data siap" ketika sebenarnya sudah siap?
MohamedEzz
1
@MemoryLeaks - Itu mungkin, dan itu dilakukan oleh prosesor asinkron, yang jarang terjadi. Lebih umum, dan lebih dapat diprediksi, untuk menyinkronkan semua menggunakan jam. Jadi itu merupakan penundaan siklus clock (atau 2 atau 3) atau tidak sama sekali.
stevenvh
Terima kasih atas jawaban Anda :) Jadi singkatnya: uraian dalam pertanyaan saya di atas berarti akan menunda "CPU" dan bukan pengontrol Flash
MohamedEzz
1
@stevenvh apakah prosesor benar-benar menutup ini menerima data dari memori, maksud saya apakah itu benar-benar menghentikan eksekusi atau akan menjalankan instruksi lain jika CPU pipelined. Bagaimana dengan interupsi, saya kira mereka akan dilayani sementara CPU sedang menunggu memori siap?
Miguel Sanchez
3

Prosesor mungkin perlu menunda memori, tetapi desain yang cerdas tidak perlu.

Saya pikir teknologi utama yang tidak Anda sadari adalah burst / akses mode halaman . Yang memungkinkan bandwidth dari akses memori menjadi sangat dekat dengan kecepatan prosesor (tapi mungkin Flash masih menjadi hambatan karena saya belum pernah melihat MCU berbasis Flash yang berjalan pada> 200MHz)

Namun, latensi tetap sama. Sebagai contoh, untuk MCU STM32F4 yang saya gunakan, #wait States = floor (clockSpeed ​​/ 30MhZ). Itu berarti latensi selalu 33ns, terlepas dari kecepatan clock. Ada pepatah, "Uang bisa membeli bandwidth, tetapi latensi selamanya ..."

Bahkan jika bandwidth Flash tidak cukup untuk membuat CPU sibuk, Anda dapat dengan mudah mendesain cache kode yang menyimpan dan mengambil instruksi yang diharapkan untuk dieksekusi. ST memiliki petunjuk tentang ini untuk MCU STM32F4 mereka (168 MhZ):

Berkat akselerator ART dan memori Flash 128-bit, jumlah status tunggu yang diberikan di sini tidak memengaruhi kecepatan eksekusi dari memori Flash karena akselerator ART memungkinkan untuk mencapai kinerja yang setara dengan pelaksanaan program status tunggu 0.

Sebenarnya, pernyataan itu juga menunjukkan bahwa mode burst tidak diperlukan dan antarmuka memori yang sangat luas juga cukup. Tetapi idenya sama (menggunakan paralelisme untuk menyembunyikan latensi). Pada chip, kabel gratis, jadi memori 128bit masuk akal.

Yale Zhang
sumber
Kabel jauh dari "bebas" pada sebuah chip, secara umum, tetapi meningkatkan lebar bus antara array memori dan satu set kait tidak menambah kabel. Jika sebuah chip memiliki 256kbit flash array yang diatur sebagai kisi 512x512, perkabelan dan logika untuk memadatkan 512 kolom ke bus 32 bit akan diperlukan apakah seseorang menempatkan kait lebar 512-bit sebelum kabel dan logika "kondensasi" atau kait lebar 32-bit setelah mereka.
supercat
1
Maksud saya mereka "gratis" dibandingkan dengan pin eksternal. Saya tahu bahwa energi kawat mendominasi akhir-akhir ini dan lokalitas itu penting, jadi izinkan saya memenuhi syarat pernyataan itu. Mereka bebas untuk membuat, tetapi tidak bebas untuk dihidupkan!
Yale Zhang
1
Saya tidak yakin apa yang Anda maksud dengan "energi kawat", tetapi bahkan dari sudut pandang ruang angkasa, bus besar itu mahal, tetapi jika menggandakan lebar bus memotong panjangnya kira-kira setengahnya, biaya keseluruhan akan tetap hampir sama.
supercat