Changes between Version 41 and Version 42 of VirtualMemory
- Timestamp:
- Oct 29, 2009, 8:17:30 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
VirtualMemory
v41 v42 245 245 246 246 247 == = 3.3 generic MMU registers format & mapping ===247 == 4. generic MMU registers format & mapping == 248 248 249 249 The generic MMU contains a set of 32 bits registers (or pseudo-registers) that can be accessed by operating system, … … 282 282 '''Note''': A change to this table should be kept in sync with https://www.soclib.fr/trac/dev/wiki/Component/Iss2Api 283 283 284 === = 3.3.1 MMU_PTPR ====284 === 4.1 MMU_PTPR === 285 285 286 286 The '''MMU_PTPR''' register contains the base address of the currently used first level page table. … … 290 290 || 00000 || BASE_ADDRESS[39:13] || 291 291 292 === = 3.3.2 MMU_MODE ====292 === 4.2 MMU_MODE === 293 293 294 294 The '''MMU_MODE''' register has four bits and these 16 values are described as below. … … 297 297 || (INS TLB) || (DATA TLB) || (INS CACHE) || (DATA CACHE) || 298 298 299 === = 3.3.3 MMU_ICACHE_FLUSH & MMU_DCACHE_FLUSH ====299 === 4.3 MMU_ICACHE_FLUSH & MMU_DCACHE_FLUSH === 300 300 301 301 Writing any value in the '''MMU_ICACHE_FLUSH''' register (resp. '''MMU_DCACHE_FLUSH''' register) invalidates all cache lines stored in the instruction cache (resp. data cache). 302 302 303 === = 3.3.4 MMU_ITLB_INVAL & MMU_DTLB_INVAL ====303 === 4.4 MMU_ITLB_INVAL & MMU_DTLB_INVAL === 304 304 305 305 The value written in the 32 bits '''MMU_ITLB_INVAL''' register (resp. '''MMU_DTLB_INVAL''' register) is interpreted as a virtual address. If the instruction TLB (resp. the data TLB) contains an entry corresponding to this address, this entry is invalidated. This is a blocking request for the processor. 306 306 307 === = 3.3.5 MMU_ICACHE_INVAL & MMU_DCACHE_INVAL ====307 === 4.5 MMU_ICACHE_INVAL & MMU_DCACHE_INVAL === 308 308 309 309 The value written in the 32 bits '''MMU_ICACHE_INVAL''' register (resp. '''MMU_DCACHE_INVAL''' register) is interpreted as a virtual address. This address is translated to a physical address. If the instruction cache (resp. the data cache) contains an entry corresponding to this address, this entry is invalidated. This is a blocking request for the processor. 310 310 311 === = 3.3.6 MMU_ICACHE_PREFETCH & MMU_DCACHE_PREFETCH ====311 === 4.6 MMU_ICACHE_PREFETCH & MMU_DCACHE_PREFETCH === 312 312 313 313 The value written in the 32 bits '''MMU_ICACHE_PREFETCH''' register (resp. '''MMU_DCACHE_PREFETCH''' register) is interpreted as a virtual address. This address is translated to a physical address. If the instruction cache (resp. the data cache) does not contain the corresponding cache line, this cache line is fetched from memory. 314 314 This is a non-blocking request for the processor. 315 315 316 === = 3.3.7 MMU_SYNC ====316 === 4.7 MMU_SYNC === 317 317 318 318 Writing any value in this '''MMU_SYNC''' register will force execution of posted write requests. 319 319 This is a blocking request for the processor. 320 320 321 === = 3.3.8 MMU_IETR & MMU_DETR ====321 === 4.8 MMU_IETR & MMU_DETR === 322 322 323 323 MMU exceptions are reported in these two registers, as described in section 3.2. 324 324 325 === = 3.3.9 MMU_IBVAR & MMU_DBVAR ====325 === 4.9 MMU_IBVAR & MMU_DBVAR === 326 326 327 327 Faulty virtual adresses will be written in these two registers. 328 328 329 === = 3.3.10 MMU_PARAMS ====329 === 4.10 MMU_PARAMS === 330 330 331 331 The '''MMU_PARAMS''' register define the instruction and data caches & TLBs characteristics : … … 342 342 * NBL (4 bits) : Ln(number of bytes per Data or Instruction cache line) 343 343 344 === = 3.3.11 MMU_RELEASE ====344 === 4.11 MMU_RELEASE === 345 345 346 346 The '''MMU_RELEASE''' register contains the release number for a given hardware implementation : … … 349 349 * IMPLEMENTATION_INDEX (16 bits) 350 350 351 === = 3.3.12 MMU_WORD_HI & MMU_WORD_LO ====352 353 The two 32 bits '''MMU_DOUBLE_HI''' & MMU_DOUBLE_LO''' registers implement a double word data storage.351 === 4.12 MMU_WORD_HI & MMU_WORD_LO === 352 353 The two 32 bits '''MMU_DOUBLE_HI''' & '''MMU_DOUBLE_LO''' registers implement a double word data storage. 354 354 They are used to support cache line invalidation in physical adressing (section 3.3.15), and to support 355 355 double words LL & SC accesses (section 3.3.13 & section 3.3.14). 356 356 357 === = 3.3.13 MMU_DOUBLE_LL ====358 359 The value written in the '''MMU_DOUBLE_LL''' register is interpreted as a virtual address. It is translated to a physical address, and a double word (64 bits) Linked Load transaction is initiated. The access must be aligned on a double word boundary (the 3 LSB bits of the address are ignored). The read value is written in the MMU_WORD_HI & MMU_WORD_LO registers. This is a blocking transactionfor the processor.360 361 === = 3.4.14 MMU_DOUBLE_SC ====362 363 The value written in the'''MMU_DOUBLE_SC''' register is interpreted as a virtual address. It is translated to a physical address, and a double word (64 bits) Store Conditionnal transaction is initiated. The access must be aligned on a double word boundary (the 3 LSB bits of the address are ignored). The transmitted data are the values stored in the he MMU_WORD_HI & MMU_WORD_LO registers. The returned value is written in the MMU_WORD_LO register. This is a blocking transactionfor the processor.364 365 === = 3.4.15 MMU_ICACHE_PA_INV & MMU_DCACHE_PA_INV ====357 === 4.13 MMU_DOUBLE_LL === 358 359 The value written in the '''MMU_DOUBLE_LL''' register is interpreted as a virtual address. It is translated to a physical address, and a double word (64 bits) Linked Load transaction is initiated. The access must be aligned on a double word boundary (the 3 LSB bits of the address are ignored). The read value is written in the MMU_WORD_HI & MMU_WORD_LO registers. This is a blocking request for the processor. 360 361 === 4.14 MMU_DOUBLE_SC === 362 363 The value written in the'''MMU_DOUBLE_SC''' register is interpreted as a virtual address. It is translated to a physical address, and a double word (64 bits) Store Conditionnal transaction is initiated. The access must be aligned on a double word boundary (the 3 LSB bits of the address are ignored). The transmitted data are the values stored in the he MMU_WORD_HI & MMU_WORD_LO registers. The returned value is written in the MMU_WORD_LO register. This is a blocking request for the processor. 364 365 === 4.15 MMU_ICACHE_PA_INV & MMU_DCACHE_PA_INV === 366 366 367 367 Writing any value in the '''MMU_ICACHE_PA_INV''' register (resp. '''MMU_DCACHE_PA_INV''' register) can invalidate a cache line in the instruction cache (resp. data cache). … … 369 369 If the instruction cache (resp. data cache) contains a cache line corresponding to this address, it is invalidated. 370 370 This is a blocking request for the processor. 371