Browse Prior Art Database

Move Character in Latin Square Cache Design

IP.com Disclosure Number: IPCOM000110917D
Original Publication Date: 1994-Jan-01
Included in the Prior Art Database: 2005-Mar-26
Document File: 2 page(s) / 112K

Publishing Venue

IBM

Related People

Rechtschaffen, R: AUTHOR

Abstract

A cache is said to have a LATIN SQUARE layout if the consecutive units of cache access, DoubleWords (DWs), say, within a given cache line are in different arrays of the cache. Such a cache affords parallel access to the same DW from each element of a congruence class, by issuing the same address to each array, and parallel access to consecutive DWs within a single line, by issuing consecutive addresses to each array. The directory of such a cache specifies the location within the arrays of the "zero-th" DW of each line and the address of the other DW of a line can be calculated by using the DWI (double word index) modulo the size of the congruence class relative to the location of the "zero-th" DW.

This text was extracted from an ASCII text file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 51% of the total text.

Move Character in

Latin Square

Cache Design

      A cache is said to have a LATIN SQUARE layout if the
consecutive units of cache access, DoubleWords (DWs), say, within a
given cache line are in different arrays of the cache.  Such a cache
affords parallel access to the same DW from each element of a
congruence class, by issuing the same address to each array, and
parallel access to consecutive DWs within a single line, by issuing
consecutive addresses to each array.  The directory of such a cache
specifies the location within the arrays of the "zero-th" DW of each
line and the address of the other DW of a line can be calculated by
using the DWI (double word index) modulo the size of the congruence
class relative to the location of the "zero-th" DW.

THE MVC INSTRUCTION - Within the S/370 architecture there is a 6-byte
instruction which is called Move Character (MVC) that specifies
through base addressing, the byte address of a sink field into which
a set of consecutive bytes are to be stored, the byte address of a
source field from which the bytes stored are to be found, and the
number of such consecutive bytes.  The maximum number of such bytes
moved by a single MVC instruction is 256.

IMPROVED MVC IN LATIN SQUARE CACHE DESIGN - There are several
problems is attempting to retire the number of bytes moved by an MVC
at the maximum rate associated by the inherent concurrency of a LATIN
SQUARE cache layout.  The simplest case is when a cache line is moved
from one location to another.  Say that a cache line is 128 bytes and
the MVC specifies a 128-byte move from a 128-byte boundary to another
128-byte boundary.  The means of accomplishing this for a congruence
class set associativity size of 4 is to determine that array position
of the first store and to move the FETCH DW from the cache
4-at-a-time into a STORE BUFFER so that the stores can be properly
aligned with respect to their array positions.  The stores can be put
away at a 4-at-a-time basis and the entire MVC done in 9 cache access
cycles (4 FETCH ACCESS/ 4 STORE ACCESS/ 1 STORE PRETEST ACCESS).

      The most general MVC allows for destructive overlap where
source and sink fields overlap.  This class of MVC will not be
handled within the cache.  The alignment of the initial byte
addresses with DW boundaries and the potential for cache line
crossings within the MVC can easily be handled within the cache
controls using the same basic operations that were described for the
aligned operation.  The key concept will be the retention of the
STORE BUFFER which contains complete DW stores that will be put away
in the cache at a 4-at-a-time basis as long as the sink addresses do
not cross cache line boundaries.  In that event the organization of
stores will be based on array position but consecutive stores will
not target consecutive arrays based on a shift in the "zero-th" DW
position on the next line.  If we visualize the STORE BUFFER as a
matrix whose columns are array po...