Bosh sahifa Wiki Control and Status Register

Control and Status Register

Control and Status Register — apparat funksiyasini sozlovchi control bitlar va uning joriy holatini bildiruvchi status bitlar saqlanadigan maxsus registr yoki registrlar sinfi. Ko‘pincha CSR qisqartmasi ishlatiladi. Protsessor, interrupt controller, timer va boshqa qurilmalar dasturiy boshqaruv interfeysini shu registrlar orqali taqdim etadi.

Nazorat va holat maydonlari

Control maydoni dastur tomonidan yozilib, rejim, ruxsat yoki operatsiyani yoqadi. Status maydoni apparat tomonidan yangilanib, bandlik, xato, interrupt yoki yakunlanishni bildiradi. Bitta bit read/write, read-only, write-one-to-clear yoki yozilganda amal boshlovchi command bo‘lishi mumkin.

Masalan, timer CSR qiymat, compare nishoni, enable va pending holatini alohida maydonlarda saqlaydi. Compare yetganda apparat pending bitni qo‘yadi; software handler uni hujjatdagi usul bilan tozalaydi. Oddiy nol yozish write-one-to-clear bitga ta’sir qilmasligi mumkin.

Protsessor CSRs

ISA darajasidagi CSR exception sababi, qaytish manzili, interrupt maskasi, privilege holati va performance counterlarni saqlashi mumkin. Ayrimlari user mode’da o‘qiladi, boshqalari faqat kernel yoki hypervisor darajasida mavjud. Noto‘g‘ri privilege murojaati illegal-instruction yoki protection exception beradi.

CSR read-modify-write instruction bitta atomik me’moriy amal sifatida bitlarni o‘rnatishi yoki tozalashi mumkin. Bu interrupt handler bilan raqobatda oddiy alohida read va write’dan xavfsizroq. Ammo apparat o‘zi o‘zgartiradigan status maydoni uchun aniq semantika baribir hujjatdan olinadi.

Yon ta’sir va ordering

CSRga yozish pipeline, TLB yoki interrupt yetkazilishiga darhol ta’sir qilishi mumkin. Ayrim o‘zgarish serializing instruction yoki fence talab qiladi. Masalan, tarjima rejimi almashgach eski speculative fetch va TLB yozuvlari tozalanishi kerak.

Status registrini o‘qishning o‘zi hodisani tasdiqlashi yoki FIFO’dan element olishi mumkin. Compiler bunday o‘qishni olib tashlamasligi va takrorlamasligi uchun volatile yoki maxsus intrinsic ishlatiladi. Volatile hardware ordering’ning barcha talabini o‘zi bermaydi; barrier alohida bo‘lishi mumkin.

Virtualizatsiya va diagnostika

Gipervizor mehmon CSR murojaatini tutib, virtual nusxani yuritadi. Performance counter va timerlar vaqtni virtual ko‘rsatishi, privilege control esa host himoyasini chetlab o‘tmasligi kerak. Apparatura ayrim CSR’larni to‘g‘ridan-to‘g‘ri mehmon uchun shadow qilib, VM exitlarni kamaytiradi.

Diagnostik dump CSR nomi, xom qiymat va dekodlangan maydonlarni chip reviziyasi bilan qayd etadi. Maxfiy manzil, kalit yoki boshqa domen holatini ochuvchi maydonlar ruxsatsiz logga kiritilmaydi. Snapshot vaqtida tez o‘zgaruvchi statuslar o‘zaro mutanosib bo‘lmasligi ham ko‘rsatiladi.

Ketma-ket snapshot

64 bitli hisoblagich 32 bitli bus’da ikki o‘qishda olinishi mumkin. Past qism rollover qilsa yuqori va past yarimlar turli vaqtdagi qiymatga tegishli bo‘ladi. Apparatura latch-on-read, high-low-high tekshiruvi yoki snapshot command beradi. Driver hujjatdagi algoritm bilan izchil natija oladi.

Bir nechta bog‘langan CSR uchun ham umumiy snapshot zarur bo‘lishi mumkin. Masalan, xato manzili keyingi xato kelganda yangilanadi. Avval statusni o‘qib hodisani muzlatish, so‘ng tafsilotlarni olish va oxirida acknowledge qilish tartibi ma’lumot yo‘qolishini oldini oladi.

CSR manzillari va bit semantikasi odatda apparat tavsifidan driver headerlariga generatsiya qilinadi. Bu yondashuv qo‘lda yozilgan siljish xatolarini kamaytiradi. Shunga qaramay, silicon revision ayrim bitni o‘zgartirsa driver qurilma identifikatoriga ko‘ra mos jadvalni tanlaydi.

Bog‘liq tushunchalar

control register, status register, privileged instruction, interrupt, bit field, system register