A memory read can be answered with multiple completions, which when put together return all requested data. To make room for packet-header overhead, the user application must allocate enough space for the maximum number of completions that might be returned.
T o ma k e t h i s p r oce s s e a sie r , t h e PC I Exp r es s Ba s e S pecificatio n q u antiz e s th e len g t h o f all completio n p ac k e t s suc h tha t eac h completion mu s t s t a r t a n d en d o n a nat u rall y aligne d r e a d completio n bo u nda r y ( R CB) , unle s s, i t se r v ic e s th e s t a r tin g o r en d in g a dd r e s s o f th e original r e que s t . Requests which cross the address boundaries at integer multiples of RCB byte s can b e completed using more than one completion, but the returne d data must not be fragmented except along the following address boundaries:
• The first completion must start with the address specified in the request, and must end at one of the following:
° The address specified in the request plus the length specified by the request (for example, the entire request).
° An address boundary between the start and end of the request at an integer multiple of RCB bytes.
• The final completion must end with the address specified in the request plus the length specified by the request.
• All completions between, but not including, the first and final completions must be an integer multiple of RCB bytes in length.
Th e programmed v alu e o f R C B i s provided on cfg_rcb_status[1:0] . Here cfg_rcb_status[0] and cfg_rcb_status[1] are associated with physical functions 0 and 1 respectively (Per Function Link Control register [3]). I f t h e u s e r a p plicatio n doe s no t r e a d th e R C B v alue , i t mu s t us e th e default v alu e o f 6 4 b y t e s.
c f g_rcb_status[0] or cfg_rcb_status[1] |
Read Completion Boundary |
|||
Bytes |
DW |
QW |
Credits |
|
0 |
64 |
16 |
8 |
4 |
1 |
128 |
32 |
16 |
8 |
When calculating the number of completion credits a non-posted request requires, you must determine how many RCB-bounded blocks the completion response might be required, which is the same as the number of completion header credits required.