mirror of
https://github.com/elwrcl/intel-hard-lab.git
synced 2026-10-31 07:48:02 +03:00
3350 lines
201 KiB
Plaintext
3350 lines
201 KiB
Plaintext
Intel® OpenSource HD Graphics
|
||
Programmer’s Reference Manual (PRM)
|
||
Volume 1 Part 7: L3$/URB
|
||
(Ivy Bridge)
|
||
|
||
|
||
For the 2012 Intel® Core™ Processor Family
|
||
|
||
|
||
May 2012
|
||
Revision 1.0
|
||
|
||
|
||
NOTICE:
|
||
This document contains information on products in the design phase of development, and Intel
|
||
reserves the right to add or remove product features at any time, with or without changes to this
|
||
open source documentation.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12
|
||
Creative Commons License
|
||
You are free to Share — to copy, distribute, display, and perform the work
|
||
|
||
Under the following conditions:
|
||
|
||
Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any
|
||
way that suggests that they endorse you or your use of the work).
|
||
|
||
No Derivative Works. You may not alter, transform, or build upon this work.
|
||
®
|
||
INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO
|
||
LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL
|
||
PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S
|
||
TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY
|
||
WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO
|
||
SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO
|
||
FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY
|
||
PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
|
||
|
||
A "Mission Critical Application" is any application in which failure of the Intel Product could result, directly
|
||
or indirectly, in personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR
|
||
ANY SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS
|
||
SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND
|
||
EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES
|
||
AND REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM
|
||
OF PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH
|
||
MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS
|
||
NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY
|
||
OF ITS PARTS.
|
||
|
||
Intel may make changes to specifications and product descriptions at any time, without notice. Designers
|
||
must not rely on the absence or characteristics of any features or instructions marked "reserved" or
|
||
"undefined". Intel reserves these for future definition and shall have no responsibility whatsoever for
|
||
conflicts or incompatibilities arising from future changes to them. The information here is subject to
|
||
change without notice. Do not finalize a design with this information.
|
||
|
||
The products described in this document may contain design defects or errors known as errata which
|
||
may cause the product to deviate from published specifications. Current characterized errata are
|
||
available on request.
|
||
|
||
Implementations of the I2C bus/protocol may require licenses from various entities, including Philips
|
||
Electronics N.V. and North American Philips Corporation.
|
||
|
||
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries.
|
||
|
||
*Other names and brands may be claimed as the property of others.
|
||
|
||
|
||
Copyright © 2012, Intel Corporation. All rights reserved.
|
||
|
||
|
||
|
||
|
||
2 5/29/2012 Doc Ref #: IHD-OS-V1 Pt 7 – 05 12
|
||
Contents
|
||
1. L3$/URB.................................................................................................................................................. 5
|
||
1.1 Overview .............................................................................................................................................. 5
|
||
1.2 L3$ Cache Configuration ..................................................................................................................... 5
|
||
1.3 Memory Object Control State on Cacheability ..................................................................................... 6
|
||
2. Atomics .................................................................................................................................................. 7
|
||
2.1 Atomics in L3 ........................................................................................................................................ 8
|
||
2.2 Atomics in SLM .................................................................................................................................... 9
|
||
2.3 Atomics in URB .................................................................................................................................... 9
|
||
3. L3 Allocation and Programming ........................................................................................................ 10
|
||
3.1 Non-SLM mode Allocation ................................................................................................................. 10
|
||
3.2 SLM mode Allocation ......................................................................................................................... 11
|
||
4. L3 Invalidation and Flush Flows ........................................................................................................ 12
|
||
4.1 Read Only Stream Invalidations ........................................................................................................ 12
|
||
4.2 Pipelined Flush for Writes .................................................................................................................. 13
|
||
4.3 Global Invalidation .............................................................................................................................. 14
|
||
5. Shared Local Memory (SLM) .............................................................................................................. 15
|
||
5.1 Protocol .............................................................................................................................................. 15
|
||
6. Control Field Definition ....................................................................................................................... 17
|
||
7. Dynamic Parity Feature for GFX L3 Cache ....................................................................................... 18
|
||
7.1 Feature Definition ............................................................................................................................... 18
|
||
7.2 Hardware and Software Flows ........................................................................................................... 18
|
||
7.2.1 Parity Generation & Detection ...................................................................................................... 18
|
||
7.2.2 Correction Using Parity Error data and Redundant Rows ............................................................ 18
|
||
7.2.3 Number of Corrections ................................................................................................................. 19
|
||
7.2.4 Summary ...................................................................................................................................... 19
|
||
7.2.5 Sub-banks with more than two persistent parity error rows ......................................................... 19
|
||
7.2.6 Interrupt Enabling ......................................................................................................................... 20
|
||
7.2.7 Clearing the Error Reporting Registers ........................................................................................ 20
|
||
7.3 Hardware Registers ........................................................................................................................... 20
|
||
7.3.1 Error Report Registers .................................................................................................................. 20
|
||
7.3.2 Row Replacement Registers ........................................................................................................ 22
|
||
8. L3 Register Space (Bspec) ................................................................................................................. 23
|
||
8.1 config space for L3 ............................................................................................................................. 23
|
||
8.1.1 SARERRST - SARB Error Status ................................................................................................. 24
|
||
8.1.2 L3CDERRST2 - L3CD Error Status register 2 ............................................................................. 25
|
||
8.1.3 L3SQCREG1 - L3 SQC registers 1 .............................................................................................. 26
|
||
8.1.4 L3SQCREG2 - L3 SQC registers 2 .............................................................................................. 30
|
||
8.1.5 L3SQCREG3 - L3 SQC registers 3 .............................................................................................. 32
|
||
8.1.6 L3CNTLREG1 - L3 Control Register1 .......................................................................................... 36
|
||
8.1.7 L3CNTLREG2 - L3 Control Register2 .......................................................................................... 38
|
||
8.1.8 L3CNTLREG3 - L3 Control Register3 .......................................................................................... 40
|
||
8.1.9 L3SLMREG - L3 SLM Register .................................................................................................... 41
|
||
8.1.10 GARBCNTLREG - Arbiter Control Register ............................................................................... 42
|
||
8.1.11 L3SQCREG4 - L3 SQC register 4 .............................................................................................. 44
|
||
8.1.12 SCRATCH1 - SCRATCH1.......................................................................................................... 45
|
||
8.1.13 L3B0REG1 - L3 bank0 reg1 log error ......................................................................................... 46
|
||
8.1.14 L3B0REG2 - L3 bank0 reg2 log error ......................................................................................... 47
|
||
8.1.15 L3B0REG3 - L3 bank0 reg3 log error ......................................................................................... 48
|
||
8.1.16 L3B0REG4 - L3 bank0 reg4 log error ......................................................................................... 49
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 3
|
||
8.1.17 L3B0REG5 - L3 bank0 reg5 log error ......................................................................................... 50
|
||
8.1.18 L3B0REG6 - L3 bank0 reg6 log error ......................................................................................... 51
|
||
8.1.19 L3B0REG7 - L3 bank0 reg7 log error ......................................................................................... 52
|
||
8.1.20 L3B1REG0 - L3 bank1 reg0 log error ......................................................................................... 53
|
||
8.1.21 L3B1REG1 - L3 bank1 reg1 log error ......................................................................................... 54
|
||
8.1.22 L3B1REG2 - L3 bank1 reg2 log error ......................................................................................... 55
|
||
8.1.23 L3B1REG3 - L3 bank1 reg3 log error ......................................................................................... 56
|
||
8.1.24 L3B1REG4 - L3 bank1 reg4 log error ......................................................................................... 57
|
||
8.1.25 L3B1REG5 - L3 bank1 reg5 log error ......................................................................................... 58
|
||
8.1.26 L3B1REG6 - L3 bank1 reg6 log error ......................................................................................... 59
|
||
8.1.27 L3B1REG7 - L3 bank1 reg7 log error ......................................................................................... 60
|
||
8.1.28 L3B2REG0 - L3 bank2 reg0 log error ......................................................................................... 61
|
||
8.1.29 L3B2REG1 - L3 bank2 reg1 log error ......................................................................................... 62
|
||
8.1.30 L3B2REG2 - L3 bank2 reg2 log error ......................................................................................... 63
|
||
8.1.31 L3B2REG3 - L3 bank2 reg3 log error ......................................................................................... 64
|
||
8.1.32 L3B2REG4 - L3 bank2 reg4 log error ......................................................................................... 65
|
||
8.1.33 L3B2REG5 - L3 bank2 reg5 log error ......................................................................................... 66
|
||
8.1.34 L3B2REG6 - L3 bank2 reg6 log error ......................................................................................... 67
|
||
8.1.35 L3B2REG7 - L3 bank2 reg7 log error ......................................................................................... 68
|
||
8.1.36 L3B3REG0 - L3 bank3 reg0 log error ......................................................................................... 69
|
||
8.1.37 L3B3REG1 - L3 bank3 reg1 log error ......................................................................................... 70
|
||
8.1.38 L3B3REG2 - L3 bank3 reg2 log error ......................................................................................... 71
|
||
8.1.39 L3B3REG3 - L3 bank3 reg3 log error ......................................................................................... 72
|
||
8.1.40 L3B3REG4 - L3 bank3 reg4 log error ......................................................................................... 73
|
||
8.1.41 L3B3REG5 - L3 bank3 reg5 log error ......................................................................................... 74
|
||
8.1.42 L3B3REG6 - L3 bank3 reg6 log error ......................................................................................... 75
|
||
8.1.43 L3B3REG7 - L3 bank3 reg7 log error ......................................................................................... 76
|
||
8.1.44 SARBCSR - SARB config save msg .......................................................................................... 77
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 4
|
||
1. L3$/URB
|
||
1.1 Overview
|
||
GFX L3 cache is introduced for GFX core as a large storage which backs up various L2/L1 caches on
|
||
many clients. It provides a simple way based partitioning option for each or a cluster of clients to get a
|
||
dedicated chunk of the cache. It also acts as a GFX URB and can be configured as highly banked
|
||
memory for EUs/ROWs.
|
||
In order to provide the bandwidth needed L3 has been separated into 4x128KB structures which can be
|
||
accessed concurrently. A 2x clocking is introduced to further enhance the bandwidth and cover the
|
||
limitations of SRAM (6T) design.
|
||
|
||
Formed as 4 (2 for GT1) individual banks each with 128KB in size
|
||
Each logical bank consists of
|
||
o Data Array
|
||
o Tag Array
|
||
o LRU Array (implements a Pseudo Least Recently Used algorithm)
|
||
o State Array
|
||
o SuperQ Data Buffer
|
||
o Atomic Processing Unit
|
||
|
||
The rest of the support logic around L3 are
|
||
o SuperQ (main scheduler)
|
||
o Ingress/Egress queues to L3/SQ (L3 arbiter)
|
||
o CAM structures to maintain coherency.
|
||
o Crossbars for data routing
|
||
|
||
Use of 2x/1x clocking
|
||
L3 operates in GFX coherent domain
|
||
A portion of L3 can be allocated as highly banked memory
|
||
|
||
|
||
1.2 L3$ Cache Configuration
|
||
4x128KB cache, 64 logical ways
|
||
64B Cacheline with a portion capable of highly banked memory (with 16x4B
|
||
capability)
|
||
Interface 64B to SQDB for the fill/write path, 64B Read/Evict path to SQDB
|
||
Data Array built via 6T cells
|
||
o Data protection via parity
|
||
|
||
TAG/LRU/STATE (using gen-ram via RLS flows)
|
||
o 32-bit GFX addressing support in TAG
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 5
|
||
o 2 bit state
|
||
o Intel pseudo-LRU implementation for selecting the line to be replaced
|
||
|
||
Repetition rates for each operation
|
||
o All operations – 1 every 2x clock
|
||
With b2b restriction for same type of accesses (i.e. read to read or
|
||
write to write)
|
||
|
||
|
||
1.3 Memory Object Control State on Cacheability
|
||
This 4-bit field is used in various state commands and indirect state objects to define MLC/LLC
|
||
cacheability, graphics data type for memory objects.
|
||
|
||
Bit Description
|
||
|
||
3 Reserved
|
||
2
|
||
Graphics Data Type (GFDT)
|
||
This field contains the GFDT bit for this surface when writes occur. GFDT can also be set by the
|
||
GTT. The effective GFDT is the logical OR of this field with the GFDT from the GTT entry. This
|
||
field is ignored for reads.
|
||
The GFDT bit is stored in the LLC and selective cache flushing of lines with GFDT set is
|
||
supported. It is intended to be set on displayable data, which enables efficient flushing of data to
|
||
be displayed after rendering, since display engine does not snoop the rendering caches.
|
||
Format = U1
|
||
1
|
||
LLC Cacheability Control (LLCCC)
|
||
This is the field used in GT interface block to determine what type of access need to be
|
||
generated to uncore. For the cases where the LLCCC is set, cacheable transaction are
|
||
generated to enable LLC usage for particular stream.
|
||
0: use cacheability controls from GTT entry
|
||
1: Data is cached in LLC
|
||
|
||
0
|
||
L3 Cacheability Control (L3CC)
|
||
This field is used to control the L3 cacheability (allocation) of the stream.
|
||
0: not cacheable within L3
|
||
1: cacheable in L3
|
||
Note: even if the surface is not cacheable in L3, it is still kept coherent with L3 content.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 6
|
||
2. Atomics
|
||
An atomic operation may involve both reading from and then writing to a memory location. Atomic
|
||
operations apply only to either u# (Unordered Access Views) or g# (Thread Group Shared Memory). It is
|
||
guaranteed that when a thread issues an atomic operation on a memory address, no write to the same
|
||
address from outside the current atomic operation by any thread can occur between the atomic read and
|
||
write.
|
||
If multiple atomic operations from different threads target the same address, the operations are serialized
|
||
in an undefined order. This serialization happens outside of the L3 control logic.
|
||
Atomic operations do not imply a memory or thread fence. If the program author/compiler does not make
|
||
appropriate use of fences, it is not guaranteed that all threads see the result of any given memory
|
||
operation at the same time, or in any particular order with respect to updates to other memory addresses.
|
||
Atomicity is implemented at 32-bit granularity. If a load or store operation spans more than 32-bits, the
|
||
individual 32-bit operations are atomic, but not the whole.
|
||
Limitation: Atomic operations on Thread Group Shared Memory are atomic with respect to other atomic
|
||
operations, as well as operations that only perform reads (“load”s). However atomic operations on Thread
|
||
Group Shared Memory are NOT atomic with respect to operations that perform only writes (“store”s) to
|
||
memory. Mixing of atomics and stores on the same Thread Group Shared Memory address without
|
||
thread synchronization and memory fencing between them produces undefined results at the address
|
||
involved. This limitation arises because some implementations of loads and stores do not honor the
|
||
locking semantics for implementing atomics. It turns out this has no impact on loads, since they are
|
||
guaranteed to retrieve a value either before or after an atomic (they will not retrieve partially updated
|
||
values, given they are all defined at 32-bit quanta). However store operations could find their way into the
|
||
middle of an atomic operation and thus have their effect possibly lost.
|
||
In L3 or SLM, the atomic operation leads to a read-modify-write operation on the destination location with
|
||
the option of returning value back to requester. The table below is defined as a list of atomic operations
|
||
needed:
|
||
Atomic Description New Return Value
|
||
Operation Destination (optional)
|
||
Value
|
||
Atomic_AND Single component 32-bit bitwise AND of operand src0 “old_dst” AND old_dst
|
||
into dst at 32-bit per component address dstAddress, “src0”
|
||
performed atomically.
|
||
Atomic_OR Single component 32-bit bitwise OR of operand src0 “old_dst” OR old_dst
|
||
into dst at 32-bit per component address dstAddress, “src0”
|
||
performed atomically.
|
||
Atomic_XOR Single component 32-bit bitwise XOR of operand src0 “old_dst” XOR old_dst
|
||
into dst at 32-bit per component address dstAddress, “src0”
|
||
performed atomically.
|
||
Atomic_MOVE Replacement of the dst with src0. “src0” old_dst
|
||
Atomic_INC Single component 32-bit integer increment of dst back “old_dst + 1” old_dst
|
||
into dst
|
||
Atomic_DEC Single component 32-bit integer decrement of dst back “old_dst - 1” old_dst
|
||
into dst
|
||
Atomic_ADD Single component 32-bit integer add of operand src0 “old_dst +
|
||
old_dst
|
||
into dst at 32-bit per component address src0”
|
||
performed atomically. Insensitive to sign
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 7
|
||
Atomic Description New Return Value
|
||
Operation Destination (optional)
|
||
Value
|
||
Atomic_SUB Single component 32-bit integer subtraction of operand “old_dst - src0”
|
||
old_dst
|
||
src0 into dst at 32-bit per component address
|
||
performed atomically. Insensitive to sign
|
||
Atomic_RSUB Single component 32-bit integer subtraction of operand “src0 - old_dst”
|
||
old_dst
|
||
dst from src0 into dst at 32-bit per component
|
||
address performed atomically. Insensitive to
|
||
sign
|
||
Atomic_IMAX Single component 32-bit signed MAX of operand src0 IMAX (old_dst, old_dst
|
||
into dst at 32-bit per component address dstAddress, src0)
|
||
performed atomically.
|
||
Atomic_IMIN Single component 32-bit signed MIN of operand src0 IMIN (old_dst, old_dst
|
||
into dst at 32-bit per component address dstAddress, src0)
|
||
performed atomically.
|
||
Atomic_UMAX Single component 32-bit unsigned MAX of operand UMAX old_dst
|
||
src0 into dst at 32-bit per component address (old_dst, src0)
|
||
dstAddress, performed atomically.
|
||
Atomic_UMIN Single component 32-bit unsigned MIN of operand src0 UMIN (old_dst, old_dst
|
||
into dst at 32-bit per component address dstAddress, src0)
|
||
performed atomically.
|
||
Atomic_CMP/WR old_dst
|
||
Single component 32-bit value compare of operand (src0 ==
|
||
src0 with dst at 32-bit per component address old_dst)?
|
||
dstAddress
|
||
src1:
|
||
If the compared values are identical, the single-
|
||
old_dst
|
||
component 32-bit value in src1 is written to destination
|
||
memory, else the destination is not changed
|
||
The entire compare+write operation is performed
|
||
atomically
|
||
Atomic_PREDEC Single component 32-bit integer decrement of dst back “old_dst - 1” new_dst
|
||
into dst
|
||
|
||
Atomics for unstructured data types will take place in L3each via a single DW atomics engine. Each L3
|
||
bank will have 2 independent atomics engines, one for L3 and one for SLM. Both L3 or SLM atomic
|
||
requests are going to be reduced to a single index (1 DW) request by DC before getting pushed to L3. In
|
||
L3, a single 32bit atomics engine is suffice to service DC requests.
|
||
The DC request for atomic will have the proper DW only byte enables set for the 32 bit of interest. The
|
||
address down to bit[2] (dword address) will also be provided to point to correct DW out of 16 lanes in
|
||
64Bytes.
|
||
The processing of atomics will follow 2 separate pipelines of operation (either SLM or L3) depending on
|
||
the destination of the access.
|
||
|
||
|
||
2.1 Atomics in L3
|
||
Atomics in L3 are handled separately in each bank, to achieve this function 2 Atomics blocks are
|
||
instantiated along with each bank. Each operand being moved to SQ also moves its data (up to 2 DWs)
|
||
into an assigned atomics block to be used later on (when he destination data is available).
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 8
|
||
A separate credit is given to L3 arbiter for atomics, once an atomic request is moved from L3 arbiter to
|
||
SQ – both the SQ credits and Atomics credits need to be deducted to regulate the number of atomic
|
||
requests in SQ. For GT2, this process allows upto 8 atomics to be performed in a given clock.
|
||
The request interface allows only 1 DW of atomics per request, data from DC will be given on DW0 (also
|
||
in DW1 if src1 is given) for all atomic operations regardless of the address of byte enables. Cacheline
|
||
address will be provided on the interface with proper Byte Enables singling the DW location of the
|
||
destination.
|
||
If final data is returned to client (optional), the DW of interest will be given in the same position pointed out
|
||
by byte enables (in fact the same DW will be replicated over 16 positions).
|
||
|
||
|
||
2.2 Atomics in SLM
|
||
SLM pipeline has a mechanism to handle atomics similar to L3/URB pipeline. There is only 1 ALU per
|
||
SLM bank. The protocol between DC and L3 allows one atomics to be performed at a given time, the
|
||
SLM controller will stall the interface if needed. Per atomics request from the DC, only ONE DW can be
|
||
active on one SLM bank. SLM pipeline can execute b2b atomics request (1 every 1x clock) as long as
|
||
b2b operations do not conflict on the same bank. If conflict is detected a single clock of bubble is inserted
|
||
into pipeline in order to update the corresponding bank with SLM output before next operation can be
|
||
performed (see SLM pipeline details)
|
||
Data from DC will be always given on DW0 and DW (if needed) and VALIDs will point to the bank of
|
||
interest out of 16 banks of SLM. Correct set of byte enables should be provided which is active for the
|
||
valid bank.
|
||
DW of interest is returned to DC on the byte enable corresponding lane of the cacheline.
|
||
|
||
|
||
2.3 Atomics in URB
|
||
Simple atomics are possible to be processed for URB locations as well. The process should fall out from
|
||
the L3 path of the atomics and is restricted similar to L3 atomics.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 9
|
||
3. L3 Allocation and Programming
|
||
L3 Cache allocation is done on a per way basis which should be consistent across all 4 banks (2 banks
|
||
for GT1). The way allocation between URB and any of the L3 clients can only be changed post pipeline
|
||
flush where L3 contains no data. This is required for stream based flushes to be dependent on the way
|
||
allocation of these corresponding streams. S/W should not be removing ways under a particular stream
|
||
and expect a later pipelined stream flush to target all the corresponding locations. The stream based flush
|
||
will be performed on the existing way allocation of that stream, there is no history of previous way
|
||
allocation tracked in the hardware.
|
||
L3 Cache has been divided into following client pools:
|
||
|
||
Shared Local Memory: When enabled its size is always fixed to 128KB (64KB for
|
||
GT1)
|
||
URB: Local memory space, provides a flexible allocation on per 8KB granularity
|
||
DC: Data Cluster Data type
|
||
Inst/State: Both instructions and state allocation is combined
|
||
Constants: Pull constants for EUs
|
||
Textures: texture allocation to back-up L2$
|
||
|
||
In addition to these sub-groups, a collection of groups are generated to bundle multiple clients under the
|
||
same allocation set:
|
||
|
||
All L3 Clients: DC, Inst/State, Constants & Textures
|
||
Read-Only Clients: Inst/State, Constants & Textures
|
||
|
||
Each of the L3 way allocations are managed via pLRU, hence best performance can be attained via
|
||
assigning a power-of-2 number of ways. This is to ensure pLRU to distribute the ways w/o hot spotting
|
||
within that client’s group. Even though design provides a flexible (per way basis) programming model for
|
||
way allocation for each client following table is given for validation and s/w programming models. The
|
||
programming options in the following table represents most likely cases for different operation modes.
|
||
For GT1, hardware will retain 2 of the L3 banks hence all following allocations will be reduced half the
|
||
size.
|
||
|
||
|
||
3.1 Non-SLM mode Allocation
|
||
Normal L3/URB mode (non-SLM mode), uses all 4 banks of L3 equally to distribute cycles. The following
|
||
allocation is a suggested programming model. Note all numbers below are given in KBytes.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 10
|
||
3.2 SLM mode Allocation
|
||
With the existence of Shared Local Memory, a 64KB chunk from each of the 2 L3 banks will be reserved
|
||
for SLM usage. The remaining cache space is divided between the remaining clients. SLM allocation is
|
||
done via reducing the number of ways on the two banks from 64 to 32.
|
||
|
||
|
||
|
||
|
||
Given the reduction on the 2 banks for L3, we have a unique problem of how to manage HASH between
|
||
4 un-equal size banks. The way to address that issue is to identify “Low Bandwidth” clients and allocate
|
||
them into un-even ways of the large banks and handle them via a 2-way HASH. The remaining clients are
|
||
allocated between 4 banks with the equal number of ways on each bank. The shaded clients in
|
||
corresponding table are supposed to correspond to low bandwidth clients and their total should be
|
||
128KB.
|
||
Note that, having mixture of 2 hashes need to ensure “there are no coherency requirements between the
|
||
high b/w and low b/w clients”. This solution prevents any producer/consumer models cross groups within
|
||
L3. When programming the low b/w vs high b/w client profile, the need for coherency with the L3 fabric
|
||
has to be considered.
|
||
Note that URB needs to be set as low b/w client in SLM mode, else the hash will fail. This is a required
|
||
s/w model.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 11
|
||
4. L3 Invalidation and Flush Flows
|
||
In, L3 fabric will support two different invalidation/flush flows. One for Read only streams and it could be
|
||
per stream basis and the other one is the pipelined flush for modified lines in L3.
|
||
|
||
|
||
4.1 Read Only Stream Invalidations
|
||
All read-only stream invalidations are done at the TOP of the pipe and communicated to L3 fabric directly
|
||
from the main command streamer. Once send to L3, command streamer can kick off the next workload to
|
||
re-use the same memory space. There are four type streams that can be covered individually or
|
||
overlapped:
|
||
|
||
Texture Invalidation
|
||
Instruction Invalidation
|
||
Constant Invalidation
|
||
State Invalidation
|
||
|
||
For all types of invalidations the flows are the same from L3 arbiter perspective: first invalidation will
|
||
directly come from the command streamer and the “state invalidation” is sent via state arbiter unit.
|
||
L3 arbiter will propagate the invalidation only after the corresponding streams’ requests are retired to
|
||
superQs. Once a particular invalidation is received, L3 arbiter will put a marker where all the existing
|
||
requests from that stream. This will allow the already existing requests to be sent to superQ while
|
||
accepting new requests, however new requests should never be sent to SuperQ until the existing
|
||
invalidation is complete. Once all existing (marked requests) moved to SQ, L3 arbiter will propagate the
|
||
invalidation request to SuperQ and keep the corresponding ingress FIFOs blocked.
|
||
Note: There may be two sources of the corresponding stream (i.e. Textures from either half-slice
|
||
arbiters…). L3 arbiter needs to ensure both streams are serviced before propagating the “invalidation to
|
||
SuperQ”.
|
||
Once SuperQ receives the invalidation, it will start monitoring particular streams transactions that could
|
||
be still in SuperQ and wait for them to retire. If there is no such requests, this process would be
|
||
immediate. The invalidation will be forwarded to L3 as SuperQ ensures there is no more requests in its
|
||
slots with the matching clientID assignment.
|
||
Once L3 cache receives the invalidation, it is guaranteed that none of its requests in the TAG pipeline
|
||
belongs to OLD marked requests from the stream getting the invalidation. SuperQ already guarantees
|
||
this process by waiting for the retirement of the marked requests. TAG pipeline controller will stall the
|
||
operations and wait for the TAG pipeline to clear than send the indication to STATE Array controller. For
|
||
the ways that are corresponding to invalidation type, all ways for matching stream type will be updated in
|
||
one shot. Once invalidation is complete, each L3 bank will send the indication to Pixel Arbiter (GAP). Note
|
||
that multiple invalidations will be serialized in L3.
|
||
GAP will collect all invalidation requests from 4 banks (2 banks for GT1) and make sure all are complete
|
||
before sending this completion back to corresponding L3 arbiters. L3 arbiters will ungate the ingress
|
||
FIFOs of the completed invalidation as they complete the last step required.
|
||
This is exception part of the Read-Only Stream invalidations where state arbiter needs to stop sending
|
||
new requests to L3 arbiters and ensure all pre-committed requests already sent to L3 arbiters:
|
||
|
||
Stop and discard any prefetch requests that may be ongoing
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 12
|
||
Finish any state requests with the length fields.
|
||
|
||
Once above conditions are satisfied the “state invalidation” will be forwarded to L3 arbiters and state
|
||
arbiter will stop sending processing any other state requests while processing the invalidation. The
|
||
ingress FIFOs will be kept blocked towards the arbiter until L3 arbiters send an indicator (all 4 of them) to
|
||
state arbiter for the completion of the state invalidation. Note that this is an extra step for L3 arbiters only
|
||
for the case of state invalidation within Read-Only streams.
|
||
Note that state arbiter needs to accumulate any new state requests that falls behind the invalidation event
|
||
and not process them until the state invalidation complete indicator is seen from GAP. It needs to ensure
|
||
old state data is cleared before sending the new state requests from clients.
|
||
There is a possibility where multiple invalidations could exist for a given stream. This is where L3 arbiters
|
||
need to co-ordinate the when the invalidation requests would be processed. As L3 arbiter receives a
|
||
particular invalidation to the time response is received from GAP, there could be yet another invalidation
|
||
for the same stream. However since the ingress FIFOs are blocked, new invalidation request should not
|
||
be processed before the prior request is complete. When L3 arbiter receives the completion from GAP, it
|
||
will start processing the new invalidation as if it was received right at the same cycle.
|
||
Same rules apply for state arbiter as well where while the completion for a prior invalidation is pending,
|
||
there may be another invalidation request from the main command streamer. State arbiter will hold off the
|
||
execution of the newer invalidation until the completions are seen from the L3 arbiters.
|
||
Note that there could be third, forth invalidations while the very invalidation is being processed. All
|
||
invalidations for a given stream could be collapsed while the prior one is being processed.
|
||
|
||
|
||
4.2 Pipelined Flush for Writes
|
||
Pipelined flush for data cluster writes will be propagated from DC directly to L3 arbiters as their buffers
|
||
are flushed. L3 arbiters will be getting a flush indicator from each DC independently, there is no point of
|
||
acting on the first flush indicator, it is easier to wait for both DCs to send their flush request and process
|
||
them together. Once both flush indicators are seen, L3 arbiter will flush all its ingress FIFOs and block
|
||
outlet of them being processed. L3 arbiter should not be sending any other requests to SuperQs until a
|
||
completion is seen.
|
||
SuperQ as a response to Write Flush will wait for all its slots to retire, this is to prevent any boundary
|
||
cases and ensure all writes are retired to L3 (if any). Once emptied, SQ will start accumulating “Flush”
|
||
requests to the defined sets and ways (defined as data cluster reserved ways) and walk through each
|
||
entry of the L3. These flush requests are to invalidate and evict any modified lines that may be present in
|
||
L3s.
|
||
After all defined ways are walked with FLUSH requests, SuperQ should wait for empty indicator once
|
||
again. This is to make sure all evicted data is retired towards GAP.
|
||
As GAP receives the flush complete indicator from each bank of L3 (4 for GT2 and 2 for GT1), it will
|
||
ensure the eviction path is retired towards GAM, Once all done, it will send an indicator to PSD units in
|
||
each half-slice. Same signal will be received by all L3 arbiters and used to un-block their interfaces
|
||
towards SuperQ.
|
||
Note that SuperQ should not release any credits to L3 arbiter when retiring an internally generated flush
|
||
request.
|
||
Similar to RO invalidations, the status of the write flush can also be tracked via register space. The
|
||
indication of each bank will be reported via its corresponding L3 arbiter to a register space.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 13
|
||
4.3 Global Invalidation
|
||
Once written a global indicator will be sent to L3 arbiters and state arbiter which will kick-off all
|
||
invalidations at once. The same register space will collect all completion from L3 arbiters and state arbiter
|
||
to clear the same bit.
|
||
Register bit can be polled by s/w to track to completion of all invalidations.
|
||
Default
|
||
Bit Access Value Description
|
||
0 RW/C 0 L3 Global Invalidations: Once written it will kick off a global invalidation for L3
|
||
both on RO and WR streams. S/W is expected to write logic1 to kick-off the
|
||
invalidation and H/W will clear the bit once all invalidations are complete.
|
||
Meanwhile S/W can poll the bit to track the completion of invalidation.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 14
|
||
5. Shared Local Memory (SLM)
|
||
Shared local memory (aka highly-banked memory) is a portion of L3 which will be dedicated to EUs as a
|
||
local memory when enabled. The accesses are only possible through data cluster with the destination
|
||
flag set as SLM. In order to support a highly banked design, 2 of the L3 banks are structured to have
|
||
16x4KB portion which could be accessed independently per clock. This part of the L3 can support 16 dw
|
||
size accesses (per SLM) in a given clock cycle.
|
||
These 16 banks can either be used as L3/URB or used as shared local memory with parallel accesses to
|
||
all banks. The choice of enabling SLM mode is done through MMIO programming
|
||
Default
|
||
Bit Access Value Description
|
||
0 RW/C 0 Enable Shared Local Memory: When set, it enables the use of 2 banks of L3 as
|
||
shared local memory which allows 64KB of L3 to be banked as 16x4KB and
|
||
allows independent accesses to all banks within the same clock cycle.
|
||
Note: This mode can only be enabled once L3 content is completely flushed.
|
||
|
||
In, SLM is structured as 64KB per half slice (6 EUs) and each 64KB allow up to 16 accesses to a
|
||
particular 4KB bank. Each 4KB bank is addressed separately where their requests are placed on a 160bit
|
||
address bus where each 10-bit correspond to a bank sequentially. Each bank gets addressed with 10bits
|
||
and provides 4B access with a total of 4KB per bank. When SLM mode is not enabled, SLM banks are
|
||
considered a part of L3 and used for cache or URB.
|
||
|
||
|
||
SLM requests are forked around the L3 arbiter, post ingress FIFOs for DC. L3 arbiter delivers
|
||
request/data to SLM controller upon the availability of credits. Request will be crossed to 2x clock domain
|
||
routed to corresponding banks. Individual bank controls are managed via SLM controller which are
|
||
muxed with L3/URB accesses. Note that SLM accesses do carry byte enables and needs to be honored
|
||
towards the banks. If the request has atomic requirements, SLM controller will provide the data to ALU
|
||
along with the atomic type. Output data is again managed with SLM controller towards the output cross
|
||
bars.
|
||
|
||
|
||
5.1 Protocol
|
||
The interface to access the Shared Local Memory is very similar to DC accesses to L3/URB with some
|
||
additional fields:
|
||
|
||
Bank Valids: A 16bit vector that points to which request in each bank’s lane being
|
||
active. DC is required to set the corresponding valid bit to perform a read or write
|
||
operation for a corresponding bank.
|
||
Bank DW offsets: 10-bit address is provided per bank basis. Each bank can be
|
||
accessed with a different address within the same clock cycle
|
||
Byte Enables could be set for any format or combination
|
||
|
||
The protocol also restricts some of the capabilities
|
||
|
||
In a given clock cycle same type of command have to be used for all banks. This
|
||
allows to read or write but not to combine different cycle operation within the same
|
||
clock.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 15
|
||
Only 1 valid could be set if the SLM access requires atomics.
|
||
In case of atomics, the data is provided always on the lower DW lanes (src0=DW0
|
||
and src1=DW1). The read return from SLM will have the DW of interest in the
|
||
natural aligned location within 64B
|
||
|
||
SLM requests are routed through the same L3/URB arbiter using the protocol credits that are available
|
||
between DC and L3, however right after the ingress queues SLM packets are routed to SLM controller
|
||
w/o going through the arbitration.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 16
|
||
6. Control Field Definition
|
||
For the state control fields are re-defined to comprehend L3 addition as following:
|
||
Bit[2] GFDT GFDT flag to color the displayable surfaces in LLC. This field is later used by GT
|
||
to poll the LLC during query/flush mechanism and used to push the data to
|
||
DRAM prior to Display Accesses
|
||
Bit[1:0] Cacheability
|
||
Control for LLC and L3 cacheabiltiy fields
|
||
Controls
|
||
Bit[1]: LLC cacheability
|
||
Bit[0]: L3 cacehability
|
||
0: Access is NOT cacheable
|
||
1: Access is cacheable
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 17
|
||
7. Dynamic Parity Feature for GFX L3
|
||
Cache
|
||
This document is meant to outline and describe dynamic parity detection function in the graphics L3
|
||
cache.
|
||
|
||
|
||
7.1 Feature Definition
|
||
The concept of DPF is to provide a run-time protection for graphics L3 cache via parity detection and
|
||
redundant rows. Parity errors are considered to be an extremely rare occurrence, but this mechanism
|
||
provides a means to address them should they occur.
|
||
In order to mitigate error detection needs of graphics L3 cache, parity detection capability has been
|
||
added to each sub-bank of the L3. A sub-bank is defined as a 16KB entity of the total 512KB cache. This
|
||
would translate into 32 independent sub-banks which all have 2 independent redundant rows for a total of
|
||
64 possible replacement rows. Redundant rows can be activated to replace a row with identified parity
|
||
errors via writing the address of the parity error row into hardware registers.
|
||
DPF allows the HW to notify SW (driver) when any single bit graphics L3 parity error has occurred and
|
||
also provide a mechanism to allow SW to fix persistent bit errors where a susceptible bit fails multiple
|
||
times.
|
||
In order to support robust GPGPU / compute workloads on graphics, Intel recommends that driver
|
||
developers implement this suggested DPF flow. Regardless, all usages of the graphics L3 cache can
|
||
benefit from the added parity protection.
|
||
|
||
|
||
7.2 Hardware and Software Flows
|
||
|
||
7.2.1 Parity Generation & Detection
|
||
The graphics L3 cache will generate 1-bit parity as data is stored in the cache. The parity bit will be
|
||
written along with data for future verification. As the same content is accessed later in time, HW re-
|
||
calculates the parity based on read content and compares with the stored parity value.
|
||
Once a mismatch is detected, HW generates a parity interrupt for the graphics driver to service.
|
||
Meanwhile, HW continues forward progress in execution. There is no implicit halt or execution stopping
|
||
for the IVB / Gen7 HW.
|
||
Along with the interrupt, the HW will update a set of registers to indicate which bank/sub-bank/row in
|
||
which the error has been detected.
|
||
|
||
|
||
7.2.2 Correction Using Parity Error data and Redundant Rows
|
||
Each sub-bank contains 2 redundant rows which could be used to replace the rows with reported parity
|
||
errors. The graphics driver, once servicing the parity interrupt, will access the reporting registers and
|
||
record the bank/sub-bank/row information. This information should be stored in a permanent (non-volatile
|
||
memory: ie: disk, registry or similar) location for future use by the graphics driver.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 18
|
||
The graphics driver will then reset the render engine (i.e. render specific reset) to prevent propagation of
|
||
the data with the parity error. Even though the graphics driver will terminate the context via resetting the
|
||
GPU upon a parity interrupt, there is a possibility that the parity interrupt may be observed by the driver
|
||
after the graphics context is complete or about to switch to a new context. For non-graphics workloads
|
||
that require high data integrity, such as GPGPU computing, the driver should prevent this possible
|
||
boundary case by polling the error reporting registers when a context completion or context switch
|
||
interrupt is registered by the driver. Upon identifying that the error reporting registers are active, the driver
|
||
should follow the same steps as servicing a parity interrupt.
|
||
Post any reset event (graphics reset, power up, etc..), the graphics driver retrieve the parity failure row
|
||
information from non-volatile storage. It will then program the parity failure row information into
|
||
corresponding bank/sub-bank registers and start normal graphics operation. Parity failure rows would
|
||
then be effectively replaced with the extra redundant rows until next system reset.
|
||
In the extremely rare probability that redundant rows themselves have a parity errors, the parity error will
|
||
be reported as the row they have replaced. SW drivers should recognize the use of redundant row and
|
||
skip the replacement.
|
||
|
||
|
||
7.2.3 Number of Corrections
|
||
Given DPF is designed to deal with persistent errors, graphics drivers need to be able to identify which
|
||
sub-bank rows are producing the most number of errors. Hence, the driver should keep a list of the
|
||
reported parity error rows and record the number of times each row reports a parity error. If there are
|
||
more than 2 parity error rows identified for a given sub-bank, the driver should replace the top two rows
|
||
first (decided by historical error count). This will force rows with consistent parity errors to bubble up to the
|
||
top of the list to be replaced.
|
||
SW driver tracking of parity error rows should be saved in non-volatile memory, so the driver can keep
|
||
track of parity failure rows across reboot/reset.
|
||
|
||
|
||
7.2.4 Summary
|
||
Basic Algorithm:
|
||
|
||
Each sub-bank has two redundant rows. (By HW design)
|
||
Driver SW keeps track of each sub-bank’s parity failure rows and keeps a count of failures of each
|
||
row.
|
||
Error count row information is saved to non-volatile memory, so it persists across reboot and
|
||
graphics resets.
|
||
At all times, the two redundant sub-bank rows are used to replace the highest count parity failure
|
||
rows.
|
||
SW always forces reset (graphics render reset is sufficient) on L3 errors.
|
||
SW programs all necessary replacement rows after any reset.
|
||
|
||
|
||
7.2.5 Sub-banks with more than two persistent parity error rows
|
||
While not expected during normal lifetime operation, a problematic case could occur when the HW
|
||
reports more than 2 rows on a particular sub-bank are causing parity errors. For this case, the graphics
|
||
driver should keep replacing the rows, always selecting the two rows with the highest parity error failure
|
||
count.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 19
|
||
7.2.6 Interrupt Enabling
|
||
In order to enable proper DPF notification, the graphics driver must enable the correct interrupt paths
|
||
from render command streamer (x20A8) as well as rest of the interrupt structures around GTISR
|
||
(x44010), GTIMR (x44014), GTIIR (x44018), GTIER (x4401C). Bit5 has been selected for L3 parity
|
||
interrupts. Please refer to the appropriate register sections for generic graphics interrupt enabling details.
|
||
|
||
|
||
7.2.7 Clearing the Error Reporting Registers
|
||
Clearing error status registers for the L3 cache should be done by writing to L3CD Error Status Register
|
||
bit[13] with a logical value of “1”. This should be done after an error is reported and a row has been
|
||
replaced. The graphics driver can do this in two different ways:
|
||
1. Via batch buffer executed in HW (via LRI or LRM mechanisms)
|
||
2. Direct writes to graphics HW MMIO space
|
||
Direct reads and writes using graphics MMIO (for both error log and status registers) requires DOP level
|
||
clock gating to be turned off as HW might have finished execution, which will result in a hang when
|
||
accessing the L3 parity registers. This requires graphics MISCCPCTL bit 0 (x9424[0]) to be cleared prior
|
||
to register updates. It must be set again post register updates. Do not leave the DOP clock gating bit
|
||
cleared. Doing so will significantly affect graphics power.
|
||
Note that the HW parity registers will clear with any reset, hence error and row replacement registers will
|
||
have to be re-programmed any time the driver performs a HW reset or driver is re-loaded.
|
||
|
||
|
||
7.3 Hardware Registers
|
||
Various registers are used to report and contain the parity error failing row information:
|
||
|
||
|
||
7.3.1 Error Report Registers
|
||
This is the lead section for this topic and will be updated over time with introductory comments and links
|
||
to related information.
|
||
Use the “Next Topic” (right arrow) button above to proceed to the first detail section.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 20
|
||
7.3.1.1 L3CDERRST1 - L3CD Error Status register 1
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B008-B00Bh
|
||
Default Value: 00000000h
|
||
Access: RW; RO; WO;
|
||
Size: 32 bits
|
||
|
||
|
||
|
||
Bit Access Default RST/PWR Description
|
||
Value
|
||
|
||
31:25 RO 0000000b Core
|
||
Reserved (RSVD):
|
||
Reserved
|
||
24:14 RWC 00000000000b Core
|
||
Parity row address error (PRTYROWNUM):
|
||
Data array address which has parity B1:
|
||
Report the data array address which has the Error
|
||
ltcd_sarb_parity_err_rownum[10:0]
|
||
Once set by HW, it can be cleared only by MMIO Write of 1 to this register
|
||
bit 13 .
|
||
|
||
13 RWC 0b Core
|
||
Parity Error Valid (PRTYERRVLD):
|
||
Parity Error valid
|
||
Report the Parity Error
|
||
ltcd_sarb_parity_err_valid
|
||
Once set by HW, it can be cleared only by MMIO Write of 1 to this register
|
||
bit 13 .
|
||
12:11 RWC 00b Core
|
||
Parity error bank number (PRTYBNKNUM):
|
||
bank number which has parity error
|
||
Report the bank no. which has the Error
|
||
ltcd_sarb_parity_err_banknum[1:0]
|
||
Once set by HW, it can be cleared only by MMIO Write of 1 to this register
|
||
bit 13 .
|
||
10:8 RWC 000b Core
|
||
Parity Error sub-bank no (PRTYSBNKNUM):
|
||
Parity Error in sub bank:
|
||
ltcd0_sarb_parity_err_subanknum[2:0]
|
||
Once set by HW, it can be cleared only by MMIO Write of 1 to this register
|
||
bit 13 .
|
||
7 RW 1b Core
|
||
Parity report enable (LCPRTYRPTEN):
|
||
sarbcf_csr_lc_parity_report_en
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 21
|
||
this is the parity reporting enable, by default it is enabled.
|
||
When enabled parity will be reported by ltcd to sarb.
|
||
When disabled by driver, ltcd should not send out any parity error to
|
||
SARB.
|
||
6:0 RO 00h Core Reserved (RSVD):
|
||
|
||
|
||
7.3.2 Row Replacement Registers
|
||
The range of row replacement registers is addresses xB070 (bank0/sub-bank0) to xB0EC (bank3/sub-
|
||
bank7). Only the first register format is given below - all registers have the same format.
|
||
|
||
7.3.2.1 L3B0REG0 - L3 bank0 reg0 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B070-B073h
|
||
Default Value: 00000000h
|
||
Access: RW; RO
|
||
Size: 32 bits
|
||
The log error registers of the L3 will maintain the bad row information for each of the 16KB sub-bank
|
||
groups. The log should be programmed by the driver before any workloads are submitted if it is
|
||
necessary to replace parity failing rows. The contents of the log register are included in any context save
|
||
and restore by HW for RC6 power events.
|
||
All L3 error registers are put as part of HW context which could lead the same error to be reported
|
||
multiple times (i.e. when context gets reloaded).
|
||
|
||
Bit Access Default RST/PWR Description
|
||
Value
|
||
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has
|
||
been detected. The number of rows vary between 4K vs 8K/16K subbanks
|
||
which requires 10bits vs 11bits respectively. This field contains the row# with
|
||
the error.
|
||
20:17 RO 0000b Core Reserved (RSVD):
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical
|
||
16KB group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has
|
||
been detected. The number of rows vary between 4K vs 8K/16K subbanks
|
||
which requires 10bits vs 11bits respectively. This field contains the row# with
|
||
the error.
|
||
4:1 RO 0000b Core Reserved (RSVD):
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical
|
||
16KB group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 22
|
||
8. L3 Register Space (Bspec)
|
||
8.1 config space for L3
|
||
Register Name Register Symbol Register Start Register End Default Value Access
|
||
SARB Error Status SARERRST B004 B007 00000000h RO;
|
||
L3CD Error Status register 1 L3CDERRST1 B008 B00B 00000080h RW; RO;
|
||
L3CD Error Status register 2 L3CDERRST2 B00C B00F 00000000h RO;
|
||
L3 SQC registers 1 L3SQCREG1 B010 B013 01730000h RW; RO;
|
||
L3 SQC registers 2 L3SQCREG2 B014 B017 00004567h RO; RW;
|
||
L3 SQC registers 3 L3SQCREG3 B018 B01B 00001ABFh RO; RW;
|
||
L3 Control Register1 L3CNTLREG1 B01C B01F 8C47FF80h RW; RO;
|
||
L3 Control Register2 L3CNTLREG2 B020 B023 00080040h RW; RO;
|
||
L3 Control Register3 L3CNTLREG3 B024 B027 00000000h RO; RW;
|
||
L3 SLM Register L3SLMREG B028 B02B 40000000h RO; RW;
|
||
Arbiter Control Register GARBCNTLREG B02C B02F 29000000h RO; RW;
|
||
L3 SQC register 4 L3SQCREG4 B034 B037 88000000h RW; RO;
|
||
L3 bank0 reg0 log error L3B0REG0 B070 B073 00000000h RW; RO;
|
||
L3 bank0 reg1 log error L3B0REG1 B074 B077 00000000h RW; RO;
|
||
L3 bank0 reg2 log error L3B0REG2 B078 B07B 00000000h RW; RO;
|
||
L3 bank0 reg3 log error L3B0REG3 B07C B07F 00000000h RW; RO;
|
||
L3 bank0 reg4 log error L3B0REG4 B080 B083 00000000h RW; RO;
|
||
L3 bank0 reg5 log error L3B0REG5 B084 B087 00000000h RW; RO;
|
||
L3 bank0 reg6 log error L3B0REG6 B088 B08B 00000000h RW; RO;
|
||
L3 bank0 reg7 log error L3B0REG7 B08C B08F 00000000h RW; RO;
|
||
L3 bank1 reg0 log error L3B1REG0 B090 B093 00000000h RW; RO;
|
||
L3 bank1 reg1 log error L3B1REG1 B094 B097 00000000h RW; RO;
|
||
L3 bank1 reg2 log error L3B1REG2 B098 B09B 00000000h RW; RO;
|
||
L3 bank1 reg3 log error L3B1REG3 B09C B09F 00000000h RW; RO;
|
||
L3 bank1 reg4 log error L3B1REG4 B0A0 B0A3 00000000h RW; RO;
|
||
L3 bank1 reg5 log error L3B1REG5 B0A4 B0A7 00000000h RW; RO;
|
||
L3 bank1 reg6 log error L3B1REG6 B0A8 B0AB 00000000h RW; RO;
|
||
L3 bank1 reg7 log error L3B1REG7 B0AC B0AF 00000000h RW; RO;
|
||
L3 bank2 reg0 log error L3B2REG0 B0B0 B0B3 00000000h RW; RO;
|
||
L3 bank2 reg1 log error L3B2REG1 B0B4 B0B7 00000000h RW; RO;
|
||
L3 bank2 reg2 log error L3B2REG2 B0B8 B0BB 00000000h RW; RO;
|
||
L3 bank2 reg3 log error L3B2REG3 B0BC B0BF 00000000h RW; RO;
|
||
L3 bank2 reg4 log error L3B2REG4 B0C0 B0C3 00000000h RW; RO;
|
||
L3 bank2 reg5 log error L3B2REG5 B0C4 B0C7 00000000h RW; RO;
|
||
L3 bank2 reg6 log error L3B2REG6 B0C8 B0CB 00000000h RW; RO;
|
||
L3 bank2 reg7 log error L3B2REG7 B0CC B0CF 00000000h RW; RO;
|
||
L3 bank3 reg0 log error L3B3REG0 B0D0 B0D3 00000000h RW; RO;
|
||
L3 bank3 reg1 log error L3B3REG1 B0D4 B0D7 00000000h RW; RO;
|
||
L3 bank3 reg2 log error L3B3REG2 B0D8 B0DB 00000000h RW; RO;
|
||
L3 bank3 reg3 log error L3B3REG3 B0DC B0DF 00000000h RW; RO;
|
||
L3 bank3 reg4 log error L3B3REG4 B0E0 B0E3 00000000h RW; RO;
|
||
L3 bank3 reg5 log error L3B3REG5 B0E4 B0E7 00000000h RW; RO;
|
||
L3 bank3 reg6 log error L3B3REG6 B0E8 B0EB 00000000h RW; RO;
|
||
L3 bank3 reg7 log error L3B3REG7 B0EC B0EF 00000000h RW; RO;
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 23
|
||
Register Name Register Symbol Register Start Register End Default Value Access
|
||
SARB config save msg SARBCSR B1FC B1FF 00000000h RWHC; RO;
|
||
|
||
|
||
8.1.1 SARERRST - SARB Error Status
|
||
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B004-B007h
|
||
Default Value: 00000000h
|
||
Access: RO
|
||
Size: 32 bits
|
||
Reports the error if any has occurred for certain sarb features.
|
||
|
||
Bit Access Default Value RST/PWR Description
|
||
|
||
31 RO 0b Core Error if general bound is zero (ERRGENBDZO):
|
||
Error if general bound is zero set by sarbunit
|
||
1: general bound address is 0
|
||
sarbcf_csr_gen_bnd_zero_err
|
||
|
||
30 RO 0b Core Error if dynamic bound is zero (ERRDYDNZO):
|
||
Error if dynamic bound is zero- set by sarbunit
|
||
0:no error
|
||
1: dynamic address is 0
|
||
sarbcf_csr_dyn_bnd_zero_err
|
||
|
||
29 RO 0b Core Reserved (RSVD):
|
||
|
||
28 RO 0b Core General Bound Check Overflow Error (GENBNDOVF):
|
||
General Bound Check Overflow Error - set by sarbunit
|
||
1: overflow for general bound check
|
||
sarbcf_csr_gen_bnd_ovflw_err
|
||
|
||
27 RO 0b Core Dynamic Bound Check Overflow Error (DYNBDOVF):
|
||
Dynamic Bound Check Overflow Error -set by sarbunit
|
||
1: overflow for dynamic bound check
|
||
sarbcf_csr_dyn_bnd_ovflw_err
|
||
|
||
26 RO 0b Core Lower Bound Check Overflow Error (LWRBDOVF):
|
||
Lower Bound Check Overflow Error-set by sarbunit
|
||
lower bound overflow
|
||
sarbcf_csr_lower_bnd_err
|
||
|
||
25:21 RO 00000b Core INVALIDATION FLUSH STATUS REPORTING (INVSTRPT):
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 24
|
||
invalidation status for l3 is reported in this register.
|
||
|
||
20:18 RO 000b Core SARB invalidation Status reporting (SARBINVSTRPT):
|
||
invalidation status of sarb is reported in this register.
|
||
|
||
17:0 RO 00000h Core Reserved (RSVD):
|
||
Reserved
|
||
|
||
|
||
|
||
8.1.2 L3CDERRST2 - L3CD Error Status register 2
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B00C-B00Fh
|
||
Default Value: 00000000h
|
||
Access: RO; RWC;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:29 RO 000b Core
|
||
Reserved (RSVD):
|
||
reserved
|
||
28 RWC 0b Core
|
||
URB High Limit Error on B3 (URBHLB3):
|
||
URB High Limit Error on B3:
|
||
Report the URB High Limit Error- Address Bound check
|
||
Once set, it can be cleared only by MMIO Write to this register. A write of value
|
||
1 will clear it
|
||
( LTCC generates a Pulse to SARB Config , Sarb Config sets and reflect it in
|
||
the MMIO as Error status. This can be only cleared by MMIO Write to that Bit. )
|
||
ltcc3_sarb_urboff_error
|
||
27 RWC 0b Core
|
||
URB High Limit Error on B2 (URBHLB2):
|
||
URB High Limit Error on B2:
|
||
Report the URB High Limit Error- Address Bound check
|
||
Once set, it can be cleared only by MMIO Write to this register.
|
||
( LTCC generates a Pulse to SARB Config , Sarb Config sets and reflect it in
|
||
the MMIO as Error status. This can be only cleared by MMIO Write to that Bit. )
|
||
ltcc2_sarb_urboff_error
|
||
26 RWC 0b Core
|
||
URB High Limit Error on B1 (URBHLB1):
|
||
URB High Limit Error on B1:
|
||
Report the URB High Limit Error - Address Bound check
|
||
Once set, it can be cleared only by MMIO Write to this register.
|
||
( LTCC generates a Pulse to SARB Config , Sarb Config sets and reflect it in
|
||
the MMIO as Error status. This can be only cleared by MMIO Write to that Bit. )
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 25
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
ltcc1_sarb_urboff_error
|
||
|
||
25 RWC 0b Core
|
||
URB High Limit Error on B0 (URBHLB0):
|
||
URB High Limit Error on B0 :
|
||
Report the URB High Limit Error - Address Bound check
|
||
Once set, it can be cleared only by MMIO Write to this register.
|
||
( LTCC generates a Pulse to SARB Config , Sarb Config sets and reflect it in
|
||
the MMIO as Error status. This can be only cleared by MMIO Write to that Bit. )
|
||
ltcc0_sarb_urboff_error
|
||
24:0 RO 0000000h Core
|
||
Reserved (RSVD):
|
||
|
||
|
||
|
||
8.1.3 L3SQCREG1 - L3 SQC registers 1
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B010-B013h
|
||
Default Value: 01730000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
|
||
|
||
Acces Default RST/PW
|
||
Bit s Value R Description
|
||
31:2 RO 0000b Core Reserved (RSVD):
|
||
8
|
||
Reserved
|
||
|
||
27 RW 0b Core Convert L3 cycle for texture to uncachable (CON4TXTUNC):
|
||
Convert L3 cycle for texture to uncachable
|
||
1: texture has no way allocation in L3
|
||
0: texture has atleast 1 way allocated in L3 (default)
|
||
sarbcf_csr_lsqc_cnvt_txt_unchble
|
||
This bit should be set/cleared according to L3 configuration in registers at offset
|
||
0xB020 and 0xB024
|
||
|
||
26 RW 0b Core Convert L3 cycle for constant to uncachable (CON4CONSUNC):
|
||
Convert L3 cycle for constant to uncachable
|
||
1: constant has no way allocation in L3
|
||
0: constant has atleast 1 way allocated in L3 (default)
|
||
sarbcf_csr_lsqc_cnvt_const_unchble
|
||
This bit should be set/cleared according to L3 configuration in registers at offset
|
||
0xB020 and 0xB024
|
||
|
||
25 RW 0b Core Convert L3 cycle for Inst/State to uncachable (CON4INSSTUNC):
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 26
|
||
Acces Default RST/PW
|
||
Bit s Value R Description
|
||
Convert L3 cycle for Inst/State to uncachable
|
||
1: Inst/State has no way allocation in L3
|
||
0: Inst/State has atleast 1 way allocated in L3 (default)
|
||
sarbcf_csr_lsqc_cnvt_ins_st_unchble
|
||
This bit should be set/cleared according to L3 configuration in registers at offset
|
||
0xB020 and 0xB024
|
||
|
||
24 RW 1b Core Convert L3 cycle for DC to uncachable (CON4DCUNC):
|
||
Convert L3 cycle for DC to uncachable
|
||
1: DC has no way allocation in L3 (default)
|
||
0: DC has atleast 1 way allocated in L3 sarbcf_csr_lsqc_cnvt_dc_unchble
|
||
This bit should be set/cleared according to L3 configuration in registers at offset
|
||
0xB020 and 0xB024
|
||
If 0xB020[26:21] (DC Way Assignment) field is 000000, this bits needs to be
|
||
set (1). For all other values of 0xB020[26:21], this bit needs to be cleared (0)
|
||
|
||
23:1 RW 01110011 Core L3SQ General / High Priority Credit Initialization (SQGHPCI):
|
||
6 b
|
||
L3SQ General / High Priority Credit Initialization (SQGHPCI)Number of general
|
||
and high priority credits that SQ presents to L3 Arbiter blocks. This inherently
|
||
also determines the depth of the SQ; reduce the number of credits and SQ will
|
||
use fewer slots.Any value not listed here, is considered Reserved.
|
||
Value # General Credits # High Pri Credits SQ depth
|
||
00010000 2 0 2
|
||
00010001 2 2 4
|
||
00100000 4 0 4
|
||
00100001 4 2 6
|
||
00100010 4 4 8
|
||
00110000 6 0 6
|
||
00110001 6 2 8
|
||
00110010 6 4 10
|
||
00110011 6 6 12
|
||
01000000 8 0 8
|
||
01000001 8 2 10
|
||
01000010 8 4 12
|
||
01000011 8 6 14
|
||
01000100 8 8 16
|
||
01010000 12 0 12
|
||
01010001 12 2 14
|
||
01010010 12 4 16
|
||
01010011 12 6 18
|
||
01010100 12 8 20
|
||
01010101 12 12 24
|
||
01100000 16 0 16
|
||
01100001 16 2 18
|
||
01100010 16 4 20
|
||
01100011 16 6 22
|
||
01100100 16 8 24
|
||
01110000 18 0 18
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 27
|
||
Acces Default RST/PW
|
||
Bit s Value R Description
|
||
01110001 18 2 20
|
||
01110010 18 4 22
|
||
01110011 18 6 24(default)
|
||
10000000 20 0 20
|
||
10000001 20 2 22
|
||
10000010 20 4 24
|
||
10010000 22 0 22
|
||
10010001 22 2 24
|
||
10100000 24 0 24
|
||
sarbcf_csr_lsqc_hp_gen_credit_init[7:0]
|
||
|
||
|
||
15:14 RO 00b Core
|
||
Reserved (RSVD):
|
||
Reserved
|
||
13:12 RW 00b Core
|
||
L3SQ Atomics Credit Initialization (SQACI):
|
||
L3SQ Atomics Credit Initialization (SQACI)Number of atomics credits that SQ
|
||
presents to L3 Arbiter blocks.
|
||
00 = 2 Credits (default)
|
||
01 = 1 Credit1X = Reserved
|
||
sarbcf_csr_lsqc_atom_credit_init[1:0]
|
||
|
||
11:10 RW 00b Core
|
||
L3SQ Data Credit Initialization (SQDCI):
|
||
L3SQ Data Credit Initialization (SQDCI)Number of data credits that SQ presents
|
||
to L3 Arbiter blocks.
|
||
00 = 4 Credits (default)
|
||
01 = 1 Credit
|
||
10 = 2 Credits
|
||
11 = 3 Credits
|
||
sarbcf_csr_lsqc_data_credit_init[1:0]
|
||
9 RW 0b Core
|
||
L3SQ Read Once Enable for Sampler Client (SQROE):
|
||
L3SQ Read Once Enable for Sampler Client (SQROE): Enables Read Once
|
||
indications to L3 Cache from SQ. Once enabled, any reads from Sampler client
|
||
(MT) will be sent as Read Once
|
||
0 = Reads from Sampler clients issue Read to L3 Cache (default)
|
||
1 = Reads from Sampler clients issue Read Once to L3 Cache
|
||
sarbcf_csr_sampler_readonce_en
|
||
8:6 RW 000b Core
|
||
L3SQ Outstanding GAP Reads (SQOUTSGAP):
|
||
L3SQ Outstanding GAP Reads (SQOUTSGAP): Identifies the number of Pixel
|
||
Arbiter Reads that can be outstanding before SQ throttles the puts to GAP. This
|
||
is not an exact limit, but instead it is used as a threshold to throttling; once the
|
||
read count is greater than or equal to the threshold, then no reads will be issued
|
||
until data returns are received to bring the outstanding count back below the
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 28
|
||
Acces Default RST/PW
|
||
Bit s Value R Description
|
||
threshold.
|
||
000 = No limit (default)
|
||
001 = 1 read 010 = 2 reads
|
||
011 = 4 reads100 = 8 reads
|
||
101 = 16 reads11X = Reserved
|
||
sarbcf_csr_lsqc_outs_gaprd[2:0]
|
||
|
||
5:3 RW 000b Core
|
||
L3SQ Outstanding L3 Fills (SQOUTSL3F):
|
||
L3SQ Outstanding L3 Fills (SQOUTSL3F): Identifies the number of L3 Fills that
|
||
can be outstanding before SQ throttles the fill requests to L3 Cache. This is not
|
||
an exact limit, but instead it is used as a threshold to throttling; once the fill count
|
||
is greater than or equal to the threshold, then no fills will be issued until the fill
|
||
responses are received to bring the outstanding count back below the threshold.
|
||
000 = No limit (default)
|
||
001 = 1 fill
|
||
010 = 2 fills
|
||
011 = 4 fills
|
||
100 = 8 fills
|
||
101 = 16 fills
|
||
11X = Reserved
|
||
sarbcf_csr_lsqc_outs_fill[2:0]
|
||
2:0 RW 000b Core
|
||
L3SQ Outstanding L3 Lookups (SQOUTSL3L):
|
||
L3SQ Outstanding L3 Lookups (SQOUTSL3L): Identifies the number of L3
|
||
lookups that can be outstanding before SQ throttles the lookup requests to L3
|
||
Cache. This is not an exact limit, but instead it is used as a threshold to throttling;
|
||
once the lookup count is greater than or equal to the threshold, then no lookups
|
||
will be issued until the lookup responses are received to bring the outstanding
|
||
count back below the threshold.
|
||
000 = No limit (default)
|
||
001 = 1 lookup
|
||
010 = 2 lookups
|
||
011 = 4 lookups
|
||
100 = 8 lookups
|
||
101 = 16 lookups
|
||
11X = Reserved
|
||
sarbcf_csr_lsqc_outs_lookup[2:0]
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 29
|
||
8.1.4 L3SQCREG2 - L3 SQC registers 2
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B014-B017h
|
||
Default Value: 00004567h
|
||
Access: RO; RW;
|
||
Size: 32 bits
|
||
|
||
|
||
Bit Access Default Value RST/PWR Description
|
||
31:17 RO 000000000000000b Core
|
||
Reserved (RSVD):
|
||
Reserved
|
||
16 RW 0b Core
|
||
L3SQ Priority Selection Disable (SQPRIDIS):
|
||
L3SQ Priority Selection Disable (SQPRIDIS)Enables the use of priority
|
||
selection based on client ID decodes. If disabled, all cycles in SQ will
|
||
be treated as same priority
|
||
0 = Priority selection is enabled (default)
|
||
1 = Priority selection is disabled
|
||
sarbcf_csr_priority_cnt_disable
|
||
15 RW 0b Core
|
||
L3SQ Priority 3 Pool Count Disable (SQPRI3CNTDIS):
|
||
L3SQ Priority 3 Pool Count Disable (SQPRI3CNTDIS): When set,
|
||
priority3 pool becomes unlimited. And priority3 pool count value should
|
||
not be used in reset of the remaining counters.
|
||
0 = Priority 3 pool count is enabled (default)
|
||
1 = Priority 3 pool count is disabled
|
||
sarbcf_csr_priority3_cnt_disable
|
||
|
||
14:12 RW 100b Core
|
||
L3SQ Priority 3 Pool Counter (SQPRI3CNT):
|
||
L3SQ Priority 3 Pool Counter (SQPRI3CNT): The count of cycles will
|
||
be selected from priority3 pool before switching to other priority pools.
|
||
Count is used as the power of 2.
|
||
000 = 1 request
|
||
001 = 2 requests
|
||
010 = 4 requests
|
||
011 = 8 requests
|
||
..
|
||
111 = 128 requests
|
||
sarbcf_csr_priority3_cnt[2:0]
|
||
11 RW 0b Core
|
||
L3SQ Priority 2 Pool Count Disable (SQPRI2CNTDIS):
|
||
L3SQ Priority 2 Pool Count Disable (SQPRI2CNTDIS): When set,
|
||
priority2 pool becomes unlimited. And priority2 pool count value should
|
||
not be used in reset of the remaining counters.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 30
|
||
Bit Access Default Value RST/PWR Description
|
||
0 = Priority 2 pool count is enabled (default)
|
||
1 = Priority 2 pool count is disabled
|
||
sarbcf_csr_priority2_cnt_disable
|
||
10:8 RW 101b Core
|
||
L3SQ Priority 2 Pool Counter (SQPRI2CNT):
|
||
L3SQ Priority 2 Pool Counter (SQPRI2CNT): The count of cycles will
|
||
be selected from priority2 pool before switching to other priority pools.
|
||
Count is used as the power of 2.
|
||
000 = 1 request
|
||
001 = 2 requests
|
||
010 = 4 requests
|
||
011 = 8 requests
|
||
..
|
||
111 = 128 requests
|
||
sarbcf_csr_priority2_cnt[2:0]
|
||
|
||
7 RW 0b Core
|
||
L3SQ Priority 1 Pool Count Disable (SQPRI1CNTDIS):
|
||
L3SQ Priority 1 Pool Count Disable (SQPRI1CNTDIS): When set,
|
||
priority1 pool becomes unlimited. And priority1 pool count value should
|
||
not be used in reset of the remaining counters.
|
||
0 = Priority 1 pool count is enabled (default)
|
||
1 = Priority 1 pool count is disabled
|
||
sarbcf_csr_priority1_cnt_disable
|
||
6:4 RW 110b Core
|
||
L3SQ Priority 1 Pool Counter (SQPRI1CNT):
|
||
L3SQ Priority 1 Pool Counter (SQPRI1CNT): The count of cycles will
|
||
be selected from priority1 pool before switching to other priority pools.
|
||
Count is used as the power of 2.
|
||
000 = 1 request
|
||
001 = 2 requests
|
||
010 = 4 requests
|
||
011 = 8 requests
|
||
..
|
||
111 = 128 requests
|
||
sarbcf_csr_priority1_cnt[2:0]
|
||
3 RW 0b Core
|
||
L3SQ Priority 0 Pool Count Disable (SQPRI0CNTDIS):
|
||
L3SQ Priority 0 Pool Count Disable (SQPRI0CNTDIS): When set,
|
||
priority0 pool becomes unlimited. And priority0 pool count value should
|
||
not be used in reset of the remaining counters.
|
||
0 = Priority 0 pool count is enabled (default)
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 31
|
||
Bit Access Default Value RST/PWR Description
|
||
1 = Priority 0 pool count is disabled
|
||
sarbcf_csr_priority0_cnt_disable
|
||
2:0 RW 111b Core
|
||
L3SQ Priority 0 Pool Counter (SQPRI0CNT):
|
||
L3SQ Priority 0 Pool Counter (SQPRI0CNT): The count of cycles will
|
||
be selected from priority0 pool before switching to other priority pools.
|
||
Count is used as the power of 2.
|
||
000 = 1 request
|
||
001 = 2 requests
|
||
010 = 4 requests
|
||
011 = 8 requests
|
||
..
|
||
111 = 128 requests (default)
|
||
sarbcf_csr_priority0_cnt[2:0]
|
||
|
||
|
||
|
||
8.1.5 L3SQCREG3 - L3 SQC registers 3
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B018-B01Bh
|
||
Default Value: 00001ABFh
|
||
Access: RO; RW;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:30 RO 00b Core
|
||
Reserved (RSVD):
|
||
Reserved
|
||
29:28 RW 00b Core
|
||
SOLunit Priority Value (SQSOLPRIVAL):
|
||
SOLunit Priority Value (SQSOLPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by SOLunit. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_sol_priority[1:0]
|
||
27:26 RW 00b Core
|
||
GSunit Priority Value (SQGSPRIVAL):
|
||
GSunit Priority Value (SQGSPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by GSunit. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 32
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_gs_priority[1:0]
|
||
|
||
25:24 RW 00b Core
|
||
TEunit Priority Value (SQTEPRIVAL):
|
||
TEunit Priority Value (SQTEPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by TEunit. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_te_priority[1:0]
|
||
23:22 RW 00b Core
|
||
CLunit Priority Value (SQCLPRIVAL):
|
||
CLunit Priority Value (SQCLPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by CLunit. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 110 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_cl_priority[1:0]
|
||
21:20 RW 00b Core
|
||
TSunit Priority Value (SQTSPRIVAL):
|
||
TSunit Priority Value (SQTSPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by TSunit. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_ts_priority[1:0]
|
||
19:18 RW 00b Core
|
||
SFunit Priority Value (SQSFPRIVAL):
|
||
SFunit Priority Value (SQSFPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by SFunit. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_sf_priority[1:0]
|
||
17:16 RW 00b Core
|
||
SVSM Priority Value (SQSVSMPRIVAL):
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 33
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
SVSM Priority Value (SQSVSMPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by SVSM. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_svsm_priority[1:0]
|
||
|
||
15:14 RW 00b Core
|
||
SARB Priority Value (SQSARBPRIVAL):
|
||
SARB Priority Value (SQSARBPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by State Arbiter (SARB). Priority is used in the L3 Super Queue
|
||
(L3SQ).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_sarb_priority[1:0]
|
||
13:12 RW 01b Core
|
||
SBE Priority Value (SQSBEPRIVAL):
|
||
SBE Priority Value (SQSBEPRIVAL): Identifies the priority value for all cycles that
|
||
are initiated by SBE. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0
|
||
01 = Priority 1 (default)
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
sarbcf_csr_sbe_priority[1:0]
|
||
11:10 RW 10b Core
|
||
IC$ Priority Value (SQICPRIVAL):
|
||
IC$ Priority Value (SQICPRIVAL): Identifies the priority value for all cycles that
|
||
are initiated by Instruction Cache (IC$). Priority is used in the L3 Super Queue
|
||
(L3SQ).
|
||
00 = Priority 0
|
||
01 = Priority 1
|
||
10 = Priority 2 (default)
|
||
11 = Priority 3
|
||
sarbcf_csr_ic_priority[1:0]
|
||
9:8 RW 10b Core
|
||
TDL Priority Value (SQTDLPRIVAL):
|
||
TDL Priority Value (SQTDLPRIVAL): Identifies the priority value for all cycles that
|
||
are initiated by TDL. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 34
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
01 = Priority 1
|
||
10 = Priority 2 (default)
|
||
11 = Priority 3
|
||
sarbcf_csr_tdl_priority[1:0]
|
||
|
||
7:6 RW 10b Core
|
||
DCunit Priority Value (SQDCPRIVAL):
|
||
DCunit Priority Value (SQDCPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by DC. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0
|
||
01 = Priority 1
|
||
10 = Priority 2 (default)
|
||
11 = Priority 3
|
||
sarbcf_csr_dc_priority[1:0]
|
||
5:4 RW 11b Core
|
||
DAPR Priority Value (SQDAPRPRIVAL):
|
||
DAPR Priority Value (SQDAPRPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by DAPR. Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3 (default)
|
||
sarbcf_csr_dapr_priority[1:0]
|
||
3:2 RW 11b Core
|
||
MTunit Priority Value (SQMTPRIVAL):
|
||
MTunit Priority Value (SQMTPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by Sampler (MT). Priority is used in the L3 Super Queue (L3SQ).
|
||
00 = Priority 0
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3 (default)
|
||
sarbcf_csr_mt_priority[1:0]
|
||
1:0 RW 11b Core
|
||
LSQCunit Priority Value (SQPRIVAL):
|
||
LSQCunit Priority Value (SQPRIVAL): Identifies the priority value for all cycles
|
||
that are initiated by Super Queue (L3 Evictions). Priority is used in the L3 Super
|
||
Queue (L3SQ).
|
||
00 = Priority 0
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3 (default)
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 35
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
sarbcf_csr_lsqc_priority[1:0]
|
||
|
||
|
||
|
||
8.1.6 L3CNTLREG1 - L3 Control Register1
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B01C-B01Fh
|
||
Default Value: 8C47FF80h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:28 RW 1000b Core
|
||
Data Fifo Depth Control (DFIFODC):
|
||
Data Fifo Depth Control (TS mode)
|
||
Stall Control: POR is 1000b. Flexing for Hitting the stall
|
||
Validation scenarios
|
||
Maximum available setting for h/w is "1000"
|
||
sarbcf_csr_lc_datafifo_depth[3:0]
|
||
Due to w/a of bug#3665919, the depth has to be set to
|
||
“0011”
|
||
27:24 RW 1100b Core
|
||
Data Clock off time (DCLKOFFT):
|
||
Data Clock off time (DATACLKOFF): Data Clock off time -
|
||
Data block is shut off after these many number of clocks
|
||
programmed in this register bits.
|
||
sarbcf_csr_lc_dataclkoff_time[3:0]
|
||
23:20 RW 0100b Core
|
||
TAG CLK OFF TIME (TAGCLKOFF):
|
||
TAG CLK OFF TIME (TAGCLKOFF): TAG Clock Off time.
|
||
This is the time, which Clock gating Logic check before it
|
||
turn off the clock.
|
||
sarbcf_csr_lc_tagclkoff_time[3:0]
|
||
19 RW 0b Core
|
||
L3 Aging Disable Bit (L3AGDIS):
|
||
L3 Aging Disable Bit (L3AGDIS): Aging Disable
|
||
sarbcf_csr_lc_agingdis
|
||
|
||
18:15 RW 1111b Core
|
||
Fill aging (L3AGF):
|
||
Fill aging (L3AGF): Aging Counter for Fill
|
||
sarbcf_csr_lc_fill_aging_cnt[3:0]
|
||
14:11 RW 1111b Core
|
||
Aging Counter for Read 1 Port (L3AGR1):
|
||
Aging Counter for Read 1 Port (L3AGR1): Aging Counter
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 36
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
for Read 1 Port
|
||
sarbcf_csr_lc_rd1_aging_cnt[3:0]
|
||
|
||
10:7 RW 1111b Core
|
||
L3 Aging Counter for R0 (L3AGR0):
|
||
L3 Aging Counter for R0 (L3AGR0): Aging Counter for R0
|
||
Port
|
||
sarbcf_csr_lc_rd0_aging_cnt[3:0]
|
||
6:3 RW 0000b Core
|
||
Number of NOPs (L3NOP):
|
||
Number of NOPs (L3NOP): Number of NOPs to be inserted
|
||
between the Tag commands.
|
||
sarbcf_csr_lc_num_nop[3:0]
|
||
Due to w/a of bug#3665919, the depth has to be set to
|
||
“0001”
|
||
2 RW 0b Core
|
||
OP0/OP1 Disable (L3OPDIS):
|
||
OP0/OP1 Disable (L3OPDIS): This bit is used to enable the
|
||
feature of inserting the number of cycles between the tag
|
||
pipeline operation.
|
||
sarbcf_csr_lc_op0op1_disable
|
||
Due to w/a of bug#3665919, the OP1 has to be set to “1”
|
||
1 RW 0b Core
|
||
L3 OP1 Disable Mode (L3OP1DIS):
|
||
L3 OP1 Disable Mode (L3OP1DIS):
|
||
OP1 in L3 can be disabled which means there will be one
|
||
Command transferred to the Tag pipeline in 1X Domain
|
||
sarbcf_csr_lc_op1_disable
|
||
Note: If this bit is set Aging mode needs to be disabled as
|
||
well.
|
||
0 RO 0b Core
|
||
Reserved (RSVD):
|
||
Reserved
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 37
|
||
8.1.7 L3CNTLREG2 - L3 Control Register2
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B020-B023h
|
||
Default Value: 00080040h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:28 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
27 RW 0b Core
|
||
DC way assignment SLM Behavior (DCWASLMB):
|
||
DC way assignment SLM Behavior: In shared local memory mode DC is
|
||
assigned into low b/w mode which requires it to be assigned non-matched ways
|
||
of bigger banks and it will be hashed to 2 banks.
|
||
sarbcf_csr_dc_slm_lowbw
|
||
26:21 RW 000000b Core
|
||
DC Way Assignment (DCWASS):
|
||
DC Way Assignment: Number of ways allocated for DC. Note this allocation is
|
||
only for DC data types. 000000: 0KB000001: 8KB (4KB for GT1) 000010: 16KB
|
||
(8KB for GT1) 111111: 504KB (252KB for GT1)Note: This field must be 0KB is All
|
||
L3 Client Pool is non-zero.
|
||
sarbcf_csr_dc_size[5:0]
|
||
20 RW 0b Core
|
||
RO Client Pool SLM Behavior (ROCPSLMB):
|
||
RO Client Pool SLM Behavior: In shared local memory mode Read Only Clients
|
||
are assigned into low b/w mode which requires it to be assigned non-matched
|
||
ways of bigger banks and it will be hashed to 2 banks.
|
||
sarbcf_csr_ro_slm_lowbw
|
||
19:14 RW 100000b Core
|
||
Read Only Client Pool (RDOCPL):
|
||
Read Only Client Pool: Number of ways allocated for ROnly L3 clients. This is a
|
||
combined pool for all RO clients.
|
||
000000: 0KB
|
||
000001: 8KB (4KB for GT1)
|
||
000010: 16KB (8KB for GT1)
|
||
111111: 504KB (252KB for GT1)
|
||
Note: If all ROClient pool is non-zero, than Inst/state, Const and Texture client
|
||
allocation should have 0KB allocation.
|
||
sarbcf_csr_ro_size[5:0]
|
||
|
||
13:8 RW 000000b Core
|
||
All L3 Client Pool (ALL3CLPL):
|
||
All L3 Client Pool: Number of ways allocated for all L3 clients. This is a combined
|
||
pool for all L3 clients.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 38
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
000000: 0KB
|
||
000001: 8KB (4KB for GT1)
|
||
000010: 16KB (8KB for GT1)
|
||
111111: 504KB (252KB for GT1)
|
||
Note: If all L3 Client pool is non-zero, than all L3 client pools should have 0KB
|
||
allocation.
|
||
sarbcf_csr_l3_size[5:0]
|
||
|
||
7 RW 0b Core
|
||
URB SLM Behavior (URBSLMB):
|
||
URB SLM Behavior: In shared local memory mode URB is assigned into low b/w
|
||
mode which requires it to be assigned non-matched ways of bigger banks and it
|
||
will be hashed to 2 banks.
|
||
sarbcf_csr_urb_slm_lowbw
|
||
6:1 RW 100000b Core
|
||
URB Allocation (URBALL):
|
||
URB Allocation: Number of ways allocated for URB usage
|
||
000000: 0KB
|
||
000001: 8KB (4KB for GT1)
|
||
000010: 16KB (8KB for GT1)
|
||
111111: 504KB (252KB for GT1)
|
||
sarbcf_csr_urb_size[5:0]
|
||
0 RW 0b Core
|
||
SLM Mode Enable (SLMMENB):
|
||
SLM Mode Enable: When enabled, a 128KB region of L3 is reserved for SLM.
|
||
This allocation is done on 2 banks with 64KB per half-slice.
|
||
0: SLM is disabled
|
||
1: SLM is enabled
|
||
Note: For GT1, there is only one 64KB allocation for single half-slice.
|
||
sarbcf_csr_slm_mode
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 39
|
||
8.1.8 L3CNTLREG3 - L3 Control Register3
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B024-B027h
|
||
Default Value: 00000000h
|
||
Access: RO; RW;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:22 RO 0000000000b Core
|
||
Reserved (RSVD):
|
||
|
||
21 RW 0b Core
|
||
Textures Way Allocation SLM Behavior (TWALSLMB):
|
||
Textures Way Allocation SLM Behavior: In shared local memory mode
|
||
Textures is assigned into low b/w mode which requires it to be assigned non-
|
||
matched ways of bigger banks and it will be hashed to 2 banks.
|
||
sarbcf_csr_tex_slm_lowbw
|
||
|
||
20:15 RW 000000b Core
|
||
Textures Way Allocation (TXWYALL):
|
||
Textures Way Allocation: Number of ways allocated for Textures.
|
||
000000: 0KB
|
||
000001: 8KB (4KB for GT1)
|
||
000010: 16KB (8KB for GT1)
|
||
111111: 504KB (252KB for GT1)
|
||
Note: This field must be 0KB is All L3 Client Pool or Read-Only Client Pool is
|
||
non-zero.
|
||
sarbcf_csr_tex_size[5:0]
|
||
14 RW 0b Core
|
||
Constants Way Allocation SLM Behavior (CWASLMB):
|
||
Constants Way Allocation SLM Behavior: In shared local memory mode
|
||
Instruction/state is assigned into low b/w mode which requires it to be
|
||
assigned non-matched ways of bigger banks and it will be hashed to 2 banks.
|
||
sarbcf_csr_const_slm_lowbw
|
||
13:8 RW 000000b Core
|
||
Constants Way Allocation (CTWALL):
|
||
Constants Way Allocation: Number of ways allocated for Constants.
|
||
000000: 0KB
|
||
000001: 8KB (4KB for GT1)
|
||
000010: 16KB (8KB for GT1)
|
||
111111: 504KB (252KB for GT1)
|
||
Note: This field must be 0KB is All L3 Client Pool or Read-Only Client Pool is
|
||
non-zero.
|
||
sarbcf_csr_const_size[5:0]
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 40
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
7 RW 0b Core
|
||
Instruction/State Way Allocation SLM Behavior (ISWASLMB):
|
||
Instruction/State Way Allocation SLM Behavior: In shared local memory mode
|
||
Instruction/state is assigned into low b/w mode which requires it to be
|
||
assigned non-matched ways of bigger banks and it will be hashed to 2 banks.
|
||
sarbcf_csr_is_slm_lowbw
|
||
|
||
6:1 RW 000000b Core
|
||
Instruction/State Way Allocation (ISWYALL):
|
||
Instruction/State Way Allocation: Number of ways allocated for
|
||
Instruction/State usage
|
||
000000: 0KB
|
||
000001: 8KB (4KB for GT1)
|
||
000010: 16KB (8KB for GT1)
|
||
111111: 504KB (252KB for GT1)
|
||
Note: This field must be 0KB is All L3 Client Pool or Read-Only Client Pool is
|
||
non-zero.
|
||
sarbcf_csr_is_size[5:0]
|
||
0 RO 0b Core
|
||
Reserved (RSVD):
|
||
Reserved
|
||
|
||
|
||
|
||
|
||
8.1.9 L3SLMREG - L3 SLM Register
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B028-B02Bh
|
||
Default Value: 40000000h
|
||
Access: RO; RW;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31 RW 0b Core
|
||
Disable Periodic SLM/SQ slot allocation (DPSLMALL):
|
||
Disable Periodic SLM/SQ slot allocation: When cfg_lslm_livelock_fairarb_dis=1
|
||
lslm unit will always have the higher priority and lslm_lsqc_block to lsqcunit is
|
||
asserted as long as there are requests in SLM FIFO
|
||
sarbcf_csr_lslm_livelock_fairarb_dis
|
||
|
||
30:27 RW 1000b Core
|
||
LSLM_SQ_PENDING_MAX (LSLMSQPEND):
|
||
If lslmunit has read data to be sent to lcbrunit this cfg register specifies the
|
||
maximum number of clocks for which LSLMunit can block SQ request from
|
||
being sent to lcbrunit
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 41
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
Default value = 8
|
||
sarbcf_csr_lslm_sqpend_max[3:0]
|
||
|
||
26:0 RO 0000000h Core
|
||
Reserved (RSVD):
|
||
|
||
|
||
|
||
|
||
8.1.10 GARBCNTLREG - Arbiter Control Register
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B02C-B02Fh
|
||
Default Value: 29000000h
|
||
Access: RO; RW;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31
|
||
30 RW 0b Core
|
||
Disables hashing function (DISHHF):
|
||
Disables hashing function to generate bank_id[1:0] for L3$ bank accessing, and
|
||
forces the use of address[7:6] for bank_id[1:0].
|
||
0 : (default) Hash function enabled to generate L3$ bank IDs.
|
||
1 : L3$ address[7:6] used as L3$ bank IDs.
|
||
sarbcf_csr_l3bankidhashdis
|
||
29:28 RW 10b Core
|
||
Arbitration priority order between RCC and MSC (APORM):
|
||
Arbitration priority order between RCC and MSC.
|
||
00/11: Invalid; default setting used
|
||
10 : Default setting; RCC < MSC (i.e., MSC has higher priority)
|
||
01: RCC > MSC (i.e., RCC has higher priority)
|
||
sarbcf_csr_rcc_msc_pri[1:0]
|
||
|
||
27:22 RW 100100b Core
|
||
Arbitration priority order between RCZ, STC, and HIZ (APORSH):
|
||
Arbitration priority order between RCZ, STC, and HIZ.
|
||
100100 : Default setting; RCZ < STC < HIZ (i.e., RCZ has lowest
|
||
priority; HIZ has highest priority)
|
||
100001 : RCZ < HIZ < STC0
|
||
11000 : STC < RCZ < HIZ0
|
||
10010 : STC < HIZ < RCZ
|
||
001001 : HIZ < RCZ < STC
|
||
000110 : HIZ < STC < RCZ
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 42
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
Note: Others settings are invalid, and result in use of default.
|
||
sarbcf_csr_rcz_stc_hiz_pri[5:0]
|
||
|
||
21:19 RW 000b Core
|
||
Write data port arbitration priority between Z client writes and L3$
|
||
evictions (WDPAGAPZ):
|
||
Write data port arbitration priority between Z client writes and L3$ evictions.
|
||
000 : L3:Z=1:0 - i.e., L3$ evictions > Z writes; Fixed priority; Default setting.
|
||
001 : L3:Z=1:1 - i.e., L3$ evictions = Z writes; Round-robin priority
|
||
010 : L3:Z=2:1 - i.e., Z writes will have higher priority after 2 L3$ evictions have
|
||
been continuously granted earlier
|
||
011 : L3:Z=3:1 - i.e., Z writes will have higher priority after 3 L3$ evictions have
|
||
been continuously granted earlier
|
||
...
|
||
111 : L3:Z=7:1 - i.e., Z writes will have higher priority after 7 L3$ evictions have
|
||
been continuously granted
|
||
sarbcf_csr_wdpagapz[2:0]
|
||
18:16 RW 000b Core
|
||
Write data port arbitration priority between C client writes and Z/L3$
|
||
writes/evictions (WDPAGAPC):
|
||
Write data port arbitration priority between C client writes and Z/L3$
|
||
writes/evictions.
|
||
000 : L3:Z=1:0 – i.e., Z/L3$ writes/evictions > C writes; Fixed priority; Default
|
||
setting.
|
||
001 : L3:Z=1:1 – i.e., Z/L3$ writes/evictions = C writes; Round-robin priority
|
||
010 : L3:Z=2:1 – i.e., C writes will have higher priority after 2 Z/L3$
|
||
writes/evictions have been continuously granted earlier
|
||
011 : L3:Z=3:1 – i.e., C writes will have higher priority after 3 Z/L3$
|
||
writes/evictions have been continuously granted earlier
|
||
...
|
||
111 : L3:Z=7:1 – i.e., C writes will have higher priority after 7 Z/L3$
|
||
writes/evictions have been continuously granted earlier
|
||
sarbcf_csr_wdpagapc[2:0]
|
||
15:0 RO 0000h Core
|
||
Reserved (RSVD):
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 43
|
||
8.1.11 L3SQCREG4 - L3 SQC register 4
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B034-B037h
|
||
Default Value: 08000000h
|
||
Access: RWHC; RO; RW;
|
||
Size: 32 bits
|
||
|
||
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31 RO 0b Core
|
||
Reserved (RSVD):
|
||
|
||
30 RW 0b Core
|
||
L3SQ Mode select for FF32 cycles on Crossbar 0/2 (SQFF32MODE):
|
||
L3SQ Mode select for FF32 cycles on Crossbar 0/2 (SQFF32MODE):
|
||
Selects the mode in which SQ arbitrates FF32 cycles versus Half slice clients
|
||
during Crossbar 2 arbitration. Qualified with the assertion of the crossbar 0/2
|
||
enable (SQFF32EN).
|
||
In mode 0, crossbar 0/2 arbitration operates normally, and is determined strictly
|
||
by the priority bits assigned by client (SQ*PRIVAL).
|
||
In mode 1, FF32 priority values are determined by the FF32 priority override
|
||
(SQFF32PRIOVER) when an indication is observed from GAFS (greater than 32
|
||
FF cycles are pending)
|
||
1 = all FF32 cycles will receive the overridden value instead of the default client
|
||
priority value when indicated by GAFS counter
|
||
0 = all FF32 cycles will receive normal priority values (default)
|
||
29:28 RW 00b Core
|
||
L3SQ Priority Override for FF32 cycles on Crossbar 0/2 (SQFF32PRIOVER):
|
||
L3SQ Priority Override for FF32 cycles on Crossbar 0/2 (SQFF32PRIOVER):
|
||
Identifies the priority value for all FF32 cycles that are initiated by GAL3. Priority is
|
||
used in the L3 Super Queue (L3SQ). Qualified with the assertion of the crossbar
|
||
0/2 enable (SQFF32EN) and the assertion of ff32 mode select (SQFF32MODE).
|
||
00 = Priority 0 (default)
|
||
01 = Priority 1
|
||
10 = Priority 2
|
||
11 = Priority 3
|
||
27 RW 1b Core
|
||
L3SQ URB Read CAM Match Disable (SQURBRDCAMDIS):
|
||
L3SQ URB Read CAM Match Disable (SQURBRDCAMDIS):
|
||
Disables the L3SQ Cam Match ability for URB Reads. By disabling, this allows a
|
||
performance mode where URB reads are not dependent upon one another but
|
||
only on any previous URB writes to the same address. This allows many URB
|
||
reads to the same cacheline at any given time instead of serializing the requests.
|
||
1 = URB Read CAM matching is disabled; multiple URB reads to the same
|
||
cacheline are allowed to be concurrent(default)
|
||
0 = URB Read CAM matching is enabled; multiple URB reads to the same
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 44
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
cacheline are serialized
|
||
|
||
26 RWHC 0b Core
|
||
LSQC reset fcount (LSQCRFCNT):
|
||
self clearing register bit - Write to this register generates 1 clock pulse
|
||
sarbcf_csr_lsqc_rst_fcount to lsqc and also used to clear the register
|
||
sarbcf_csr_lsqc_rst_fcount_lvl is output of configdb.
|
||
25 RWHC 0b Core
|
||
LSLM1 reset fcount (LSLM1RFCNT):
|
||
self clearing register bit - Write to this register generates 1 clock pulse
|
||
sarbcf_csr_lslm1_rst_fcount goes to lslm1 and also used to clear this register bit
|
||
sarbcf_csr_lslm1_rst_fcount_lvl is ouput of configdb
|
||
24 RWHC 0b Core
|
||
LSLM3 reset fcount (LSLM3RFCNT):
|
||
self clearing register bit - Write to this register generates 1 clock pulse
|
||
sarbcf_csr_lslm3_rst_fcount goes to lslm3 and used to clear this register too
|
||
sarbcf_csr_lslm1_rst_fcount_lvl is output of configdb.
|
||
23:0 RO 000000h Core
|
||
reserved (RSVD):
|
||
|
||
|
||
|
||
|
||
8.1.12 SCRATCH1 - SCRATCH1
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B038-B03Bh
|
||
Default Value: 00000000h
|
||
Access: RWHC; RO; RW;
|
||
Size: 32 bits
|
||
|
||
|
||
Bit Access Default Value RST/PWR Description
|
||
31:1 RW 00000000h Core
|
||
SCRATCH (SCRATCH):
|
||
|
||
0 RW 0b Core
|
||
L3 Starvation Limit:
|
||
sarbcf_csr_hs_l3starvlimit -
|
||
0 : GAHS* could get starved if HDC reads are streaming
|
||
1 : GAHS* arbitrated at higher priority than HDC* read reqs
|
||
serviced in 7 clocks
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 45
|
||
8.1.13 L3B0REG1 - L3 bank0 reg1 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B074-B077h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error.
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error.
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 46
|
||
8.1.14 L3B0REG2 - L3 bank0 reg2 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B078-B07Bh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error.
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error.
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 47
|
||
8.1.15 L3B0REG3 - L3 bank0 reg3 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B07C-B07Fh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 48
|
||
8.1.16 L3B0REG4 - L3 bank0 reg4 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B080-B083h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 49
|
||
8.1.17 L3B0REG5 - L3 bank0 reg5 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B084-B087h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 50
|
||
8.1.18 L3B0REG6 - L3 bank0 reg6 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B088-B08Bh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 51
|
||
8.1.19 L3B0REG7 - L3 bank0 reg7 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B08C-B08Fh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 52
|
||
8.1.20 L3B1REG0 - L3 bank1 reg0 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B090-B093h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 53
|
||
8.1.21 L3B1REG1 - L3 bank1 reg1 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B094-B097h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 54
|
||
8.1.22 L3B1REG2 - L3 bank1 reg2 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B098-B09Bh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 55
|
||
8.1.23 L3B1REG3 - L3 bank1 reg3 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B09C-B09Fh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 56
|
||
8.1.24 L3B1REG4 - L3 bank1 reg4 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0A0-B0A3h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 57
|
||
8.1.25 L3B1REG5 - L3 bank1 reg5 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0A4-B0A7h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 58
|
||
8.1.26 L3B1REG6 - L3 bank1 reg6 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0A8-B0ABh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 59
|
||
8.1.27 L3B1REG7 - L3 bank1 reg7 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0AC-B0AFh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 60
|
||
8.1.28 L3B2REG0 - L3 bank2 reg0 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0B0-B0B3h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 61
|
||
8.1.29 L3B2REG1 - L3 bank2 reg1 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0B4-B0B7h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 62
|
||
8.1.30 L3B2REG2 - L3 bank2 reg2 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0B8-B0BBh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 63
|
||
8.1.31 L3B2REG3 - L3 bank2 reg3 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0BC-B0BFh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 64
|
||
8.1.32 L3B2REG4 - L3 bank2 reg4 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0C0-B0C3h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 65
|
||
8.1.33 L3B2REG5 - L3 bank2 reg5 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0C4-B0C7h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 66
|
||
8.1.34 L3B2REG6 - L3 bank2 reg6 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0C8-B0CBh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 67
|
||
8.1.35 L3B2REG7 - L3 bank2 reg7 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0CC-B0CFh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 68
|
||
8.1.36 L3B3REG0 - L3 bank3 reg0 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0D0-B0D3h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 69
|
||
8.1.37 L3B3REG1 - L3 bank3 reg1 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0D4-B0D7h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 70
|
||
8.1.38 L3B3REG2 - L3 bank3 reg2 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0D8-B0DBh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 71
|
||
8.1.39 L3B3REG3 - L3 bank3 reg3 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0DC-B0DFh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 72
|
||
8.1.40 L3B3REG4 - L3 bank3 reg4 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0E0-B0E3h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 73
|
||
8.1.41 L3B3REG5 - L3 bank3 reg5 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0E4-B0E7h
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 74
|
||
8.1.42 L3B3REG6 - L3 bank3 reg6 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0E8-B0EBh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 75
|
||
8.1.43 L3B3REG7 - L3 bank3 reg7 log error
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B0EC-B0EFh
|
||
Default Value: 00000000h
|
||
Access: RW; RO;
|
||
Size: 32 bits
|
||
The ERROR LOG registers of L3 will maintain the bad row information for each of the 16KB subbank
|
||
groups. The LOG will be programmed by driver before any workloads are submitted. The contents of the
|
||
LOG register will be context Save&Restored by h/w around rc6 events.
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:21 RW 000h Core
|
||
Row Number for Error1 (RNUMERR1):
|
||
Row Number for Error1: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
|
||
20:17 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
16 RW 0b Core
|
||
Valid Error 1 (VLDERR1):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
15:5 RW 000h Core
|
||
Row Number for Error0 (RNUMERR0):
|
||
Row Number for Error0: The physical row number where the parity error has been
|
||
detected. The number of rows vary between 4K vs 8K/16K subbanks which
|
||
requires 10bits vs 11bits respectively. This field contains the row# with the error
|
||
4:1 RO 0000b Core
|
||
Reserved (RSVD):
|
||
|
||
0 RW 0b Core
|
||
Valid Error 0 (VLDERR0):
|
||
Valid Error: The error located in field 15:5 is valid and corresponding logical 16KB
|
||
group should bypass this row.
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 76
|
||
8.1.44 SARBCSR - SARB config save msg
|
||
B/D/F/Type: 0/0/0/SARBunit_Config
|
||
Address Offset: B1FC-B1FFh
|
||
Default Value: 00000000h
|
||
Access: RWHC; RO;
|
||
Size: 32 bits
|
||
This register is not context saved
|
||
Default
|
||
Bit Access Value RST/PWR Description
|
||
31:2 RO 00000000h Core
|
||
Reserved (RSVD):
|
||
|
||
1 RWHC 0b Core
|
||
Context restore ack (CTXRSTRACK):
|
||
A write from cs to this bit along with mask bit 17 will prompt sarb to ack ctx
|
||
restore ack .
|
||
sarb_ctx_restore - ctx restore from cs
|
||
clr_sarb_ctx_restore - sarb clr this bit.
|
||
0 RWHC 0b Core
|
||
Context save bit (SARBCS):
|
||
A write from cs to this bit along with mask bit 16 will prompt sarb to start
|
||
context save to cs.
|
||
sarb_ctx_save - ctx save from cs
|
||
clr_sarb_ctx_save - sarb clr this bit once ctx save sm kicks in .
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 77
|
||
Revision History
|
||
Revision Number Description Revision Date
|
||
|
||
1.0 First 2012 OpenSource edition May 2012
|
||
|
||
|
||
|
||
|
||
§§
|
||
|
||
|
||
|
||
|
||
Doc Ref #: IHD-OS-V1 Pt 7 – 05 12 5/31/2012 78
|
||
|