
IBM2520L8767
IBM Processor for ATM Resources
Buffer Pool Management (POOLS)
Page 196 of 553
atmrm.chapt04.01
08/27/99
Entity 9: Buffer Pool Management (POOLS)
POOLS acts as a memory manager for the IBM2520L8767. Memory buffers are checked out and checked in
via two operations (primitives) supported by POOLS: the get pointer primitive and the free pointer primitive.
These primitives can be performed explicitly by accessing specified addresses within the POOLS entity, and
they may also be done by hardware. CSKED can free a buffer upon transmission if specified by the corre-
sponding packet header (see
ECC Syndrome Bits
on page 151), and RAALL gets buffers to store received
data. In addition POOLS contains mechanisms to control resource utilization and supports a Real Memory
Mode and a Virtual Memory Mode.
Basic Operation in Real Memory Mode
If memory is viewed as a series of buffers, POOLS maintains a circular list of available buffers. There are
pointers (the head and tail) to the start and the end of the list. When a get pointer primitive is executed, the
buffer at the head of the list is checked out, the head pointer is advanced and the correct resource group(s) is
debited. When a free pointer primitive is executed, the freed buffer is checked in at the end of the list, the tail
pointer is advanced and the correct resource group credited.
Basic Operation in Virtual Memory Mode
With the addition of virtual memory, POOLS must maintain five sets of head and tail pointers, thresholds, and
active counts; one for the virtual buffers themselves and the rest for the four regions of real buffers that con-
stitute the virtual buffers. In this case the base virtual address is the item returned from a get pointer operation
and returned during a free pointer operation. When the get buffer primitive is executed POOLS creates an
active buffer map (page table) for the virtual address. As the virtual address is used and buffer(page) bound-
aries are crossed VIMEM will request buffers from POOLS when a buffer(page) fault occurs. VIMEM will then
place the buffer index in the buffer map. When the virtual buffer is no longer needed and a free pointer primi-
tive is issued with the starting virtual address, POOLS takes the contents of the buffer map and frees the
resources that were assigned to the buffer map.
Resource Controls
POOLS adds another layer of service by creating "POOLs" of buffers (currently a maximum of 16 POOLs).
For each POOL, a maximum number of allowable buffers may be specified. The intent is to make it possible
for several applications to use the IBM2520L8767 at once without one or more applications starving the
remaining applications for memory buffers. A particular POOL’s buffers are divided into "guaranteed" and
"common" buffers. All the guaranteed buffers are considered to be dedicated to their respective POOL and
are therefore not available for general use. The common buffers are all the memory buffers remaining after
the guaranteed buffers are subtracted from the total buffers. To maintain the buffer limits on each POOL,
every POOL has a guaranteed threshold, total threshold, and an active count. When a request is made for a
buffer from a particular POOL, the guaranteed threshold is first checked. If the active count of the POOL is
less than the guaranteed threshold, the buffer is provided. If the guaranteed threshold has been reached,
then the total threshold is checked. If the active count is equal to the total threshold, no buffer is provided. If
the active count is less than the total threshold, and a common buffer is available, a buffer is provided. If there
are no common buffers available, a buffer cannot be provided and a null index is returned. To determine if a
common buffer is available a count is maintained for each size of buffer.