Patent Document

FIELD OF THE INVENTION 
   This invention relates to cache storage access in a microprocessor with multiple simultaneous requests. The invention is particularly directed to a method and system of accessing the same cache doubleword for multiple simultaneous requests where the cache has a plurality of cache interleaves with an address sliced directory. 
   RELATED APPLICATIONS 
   This application is related to United States patent application entitled “System and Method for Simultaneous Access of the Same Line in Cache Storage”, application Ser. No. 10/435,967, filed contemporaneously with this application. 
   This application is related to United States patent application entitled “Parallel Cache Interleave Accesses with Address-Sliced Directories”, application Ser. No. 10/436,217, filed contemporaneously with this application. 
   This application is related to United States patent application entitled “Long Displacement Instruction Formats”, application Ser. No. 10/403,417, filed contemporaneously with this application. 
   The descriptions set forth in these co-pending applications are hereby incorporated into the present application by this reference. These co-pending applications and the present application are owned by one and the same assignee, International Business Machines Corporation of Armonk, N.Y. 
   Trademarks: IBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. S/390, Z900 and z990 and other product names may be registered trademarks or product names of International Business Machines Corporation or other companies. 
   BACKGROUND 
   It is common in computer processor design to incorporate cache storage to provide memory access in less cycles than accessing main memory storage. Existing cache designs employ interleaved doublewords. From evaluation of performance and program instruction execution traces it has been found that there are many cases where multiple simultaneous requests are made to the same doubleword in the cache. To enable maximum execution rates requires the simultaneous cache access to the same doubleword. Thus, techniques are needed to efficiently handle simultaneous requests made to the same doubleword in the cache. 
   SUMMARY OF THE INVENTION 
   An embodiment of the invention is a processor for providing simultaneous access to the same data for a plurality of requests. The processor includes cache storage having an address sliced directory lookup structure. A same doubleword detection unit receives a first instruction including a plurality of first instruction fields on a first pipe and a second instruction including a plurality of second instruction fields on a second pipe. The same doubleword detection unit generates a same doubleword signal in response to the first instruction fields and the second instruction fields. The cache storage reads data from a single doubleword in the cache storage and simultaneously provides the doubleword to the first pipe and the second pipe in response to the same doubleword signal. 
   These and other improvements are set forth in the following detailed description. For a better understanding of the invention with advantages and features, refer to the description and to the drawings. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  illustrates exemplary stages of a processor pipeline. 
       FIG. 2  illustrates exemplary instruction formats. 
       FIG. 3  illustrates components of an exemplary processor. 
       FIG. 4  illustrates exemplary same doubleword detection logic. 
   

   The detailed description explains the preferred embodiments of the invention, together with advantages and features, by way of example with reference to the drawings. 
   DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
   Embodiments of the invention provide a method and system to detect when multiple requests are possibly to the same cache doubleword without comparing the final results of the generated address when there is an address sliced directory conflict. The detection is based on fields in the instruction text of multiple instructions received on multiple pipes. The instruction formats are described in the IBM Z/Architecture Principles of Operation, Publication SA22-7832-00, pages 5-2 to 5-7. Additional formats are described in U.S. patent application entitled “Long Displacement Instruction Formats”, application Ser. No. 10/403,417. Once detected this information is signaled to the cache to allow the cache to use information from a single directory lookup based on one instruction on one pipe to access the doubleword. The cache returns the doubleword on two data cache ports at the same time to be used on each pipe. 
   An exemplary processor for implementing embodiments of the invention has a six stage pipeline that is capable of decoding and executing multiple instructions in a single cycle. As shown in  FIG. 1 , the processor has a six stage pipeline including an instruction decode  100 , address generation  101 , cache directory and interleave read  102 , data validation and return  103 , execution  104 , and put away  105 . The processor can simultaneously decode two instructions during the first cycle of the pipeline. The processor can simultaneously generate two addresses during the second cycle of the pipeline. Embodiments disclosed herein also permit simultaneous access to the same doubleword even when there is address sliced directory conflict. 
   Embodiments of the invention allow for multiple (e.g., two) instructions to execute together during the execution cycle  104  which return data together during the cache return cycle  103  for which the data for both instructions are the same doubleword in cache. To support this operation, both interleaves for the same line are read during the cache read cycle  102 . The addresses for the two requests are generated during the address generation cycle  101 . The time required to generate this address does not permit the ability to compare the two addresses to see if they are for the same doubleword. To determine if both cache addresses are for the same cache doubleword, the processor implements a detection method during the decode cycle  100  by examining parts of the instruction text of the two instructions. If both instructions need to address the same doubleword, the processor access will, during the cache read cycle, read the single doubleword of cache data once but return that data for both the original requests. 
     FIG. 2  illustrates exemplary instruction formats and associated fields. Each instruction includes an opcode field  206  identifying the instruction and a base register field  200 . RX format and RXE format instructions include an index field  203 . A displacement field may be a one-part field  201  as shown in the RS and RX format. The RSE and RXE format instructions have a two-part displacement field divided into a low order part  204  and a high order part  205 . As described in further detail herein, the processor examines fields of the instructions to determine if both instructions need to address the same cache doubleword. 
     FIG. 3  illustrates components of an exemplary processor for determining when two instructions address the same cache doubleword. In an embodiment of the invention, parallel processing pipelines are provided for accessing the cache without incurring significant area increase by not requiring multi-ported arrays. Significant area increase is avoided by splitting the cache directories (one for each processing pipeline) wherein the directories are split between the even and odd address of the cache and data fetches (odd or even) are processed by the corresponding pipeline (odd or even). Each processing pipeline has access to the entire cache to allow for mismatching data fetches (odd fetch on an even pipeline or vice versa) thus two fetches to the same line can be processed at the same time. 
   Disclosed herein is a microprocessor with an instruction unit (I-unit), an execution unit (E-unit), and a split L1 instruction and data cache. The instruction unit may issue up to 2 operand requests to the data cache. The data cache can process up to 2 operand requests and send up to 2 operand data to the execution unit. Within the data cache, 2 processing pipelines are interleaved by line address. Each pipeline has a directory that contains half of the data cache lines. The data cache array itself is structured as a 4-way interleave based upon the double word (a 64 bit operand) address. In addition, the data cache array can be accessed from either pipeline. 
     FIG. 3  depicts instruction text  1  and instruction text  2  from instructions received on two pipes. A first instruction has a displacement field  302 , a base register field  301 , an index field  300  and an opcode field  303 . A second instruction has a displacement field  306 , a base register field  305 , an index field  304  and an opcode field  307 . 
   During the decode cycle  100  the base register fields  301  and  305  and index fields  300  and  304  are used to read from the general purpose register (GPR) file  308  the base and index register contents. During the address generation cycle  101  these register contents with the displacement fields  302  and  306  are used in address generation units  310  and  311  to form addresses  314  and  315  for each operand. These are sent to the cache  312  during the address generation cycle  101 . During that same address generation cycle the information from the same doubleword detection unit  309  indicates to cache  312  that these are for the same doubleword as shown by same doubleword signal  313 . The same doubleword signal  313  either enables or disables the simultaneous access to the same cache doubleword. The same doubleword detection unit  309  is described in further detail with reference to  FIG. 4 . 
   The cache  312  during the cache read cycle  102  will read the single doubleword of cache data once but return that data for both the original request and the simultaneous request with the doubleword address conflict in the cache. The doubleword is accessed once based on the request from one pipe and returned to operand buffers for both pipes at the same time. This allows the cache to return data for both requests during the return cycle  103 , execution of both instructions during the execution cycle  104  and result put-away for both instructions during the put-away cycle  105 . 
     FIG. 4  is a block diagram of an exemplary same doubleword detection unit  309 . Same doubleword detection unit  309  includes index field logic  400 , base register field logic  401 , displacement field logic  402  and opcode field logic  403 . A same doubleword detector  404  receives and output from logic devices  400 – 403  to detect whether the same doubleword of cache is addressed by both instructions. 
   The opcode fields  303  and  307  are examined by opcode field logic  403  to determine if the instruction has an index register field  203  and the format of the displacement field which may include a one-part field  201  or a two-part field  204  and  205 . The presence or absence of an index register field and the format of the displacement field is provided to the same doubleword detector  404 . 
   The base register fields  301  and  305  are checked for equality at base register field logic  401 . The result of the comparison is provided to the same doubleword detector  404 . If the base register fields  301  and  305  are not equal, then the two instructions are not requesting the same doubleword of cache. Thus, the same doubleword signal  313  will not enable multiple simultaneous same doubleword access. 
   Portions of the displacement fields  302  and  306  used to generate the cache doubleword address are checked for equality at displacement field logic  402 . The one-part displacement field  201  and the lower part  204  of the two-part displacement field are checked for equality at displacement field logic  402 . The high order part  205  of the displacement fields  302  and  306 , when it exists, is checked to see if it is zero in each instruction or equal between the two instructions at displacement field logic  402 . 
   If both displacement fields have the same format (i.e., both one-part or both two-part), the portions used to generate the cache doubleword address are compared for equality and if not equal, the then the two instructions are not requesting the same doubleword of cache. Thus, the same doubleword signal  313  will not enable a simultaneous same doubleword access. If the displacement fields have different formats (i.e., one is one-part and the other is two-part), the lower part must equal the one-part displacement field and the upper part must be zero for an equality to be detected. Otherwise, the two instructions are not requesting the same doubleword of cache and the same doubleword signal  313  will not enable multiple simultaneous same doubleword access. In the above operations, the detection is based on portions of the one-part, lower part and upper part displacement field establishing the doubleword address. 
   The index fields  300  and  304 , if present, from each instruction are checked to see if they are the same at index field logic  400 . If both instructions have an index field, these fields are compared. If not equal, then the two instructions are not requesting the same doubleword of cache and the same doubleword signal  313  will not enable multiple simultaneous same doubleword access. 
   If one instruction includes an index field and the other instruction does not, then the present index field is checked to determine is it is zero. If not zero, the two instructions are not requesting the same doubleword of cache and the same doubleword signal  313  will not enable multiple simultaneous same doubleword access. If the sole index field has a value of zero, then the index field logic  400  does not prevent multiple simultaneous same doubleword access. If neither instruction includes an index field (e.g., instruction formats RS and RSE in  FIG. 2 ), then the index field logic  400  does not prevent multiple simultaneous same doubleword access. 
   The results of the index field logic  400 , base register field logic  401  and displacement field logic  402 , along with the information on what fields exist from opcode field processor  403  are used by same doubleword detector  404  to determine if the addresses for the two instructions that were decoded in the decode cycle  100  are likely from the same cache doubleword. If so, the same doubleword detection unit  309  issues same doubleword signal  313 . The processor access will read the doubleword once, based on the initial request, and provide the result simultaneously to both pipes (e.g., through operand buffers associated with each of the pipes). Thus, simultaneous access to the same cache doubleword is provided to multiple pipes in the same return cycle. 
   While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.

Technology Category: 3