Patent Document

CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2013-242191 filed on Nov. 22, 2013, the entire contents of which are incorporated herein by reference. 
       FIELD 
       [0002]    The embodiments discussed herein are related to an arithmetic processing device, an arithmetic processing system, and a method for controlling an arithmetic processing device. 
       BACKGROUND 
       [0003]    In arithmetic processing devices, memory access is carried out based on atomic instructions that execute a plurality of processes in an indivisible manner. Atomic instructions refer to instructions that guarantee the obtaining of results that are the same as when a plurality of processes have been executed in a predetermined order. In the execution of atomic instructions, target data is protected by locking-target addresses being registered and locked in a lock register. 
         [0004]    Related technology is disclosed in Japanese Laid-open Patent Publication No. 4-65736. 
       SUMMARY 
       [0005]    According to an aspect of the embodiments, an arithmetic processing device includes: a arithmetic cores, wherein the arithmetic core comprises: an instruction controller configured to request processing corresponding to an instruction; a memory configured to store lock information indicating that a locking target address is locked, the locking target address, and priority information of the instruction; and a cache controller configured to, when storing data of a first address in a cache memory to execute a first instruction including locking of the first address from the instruction controller, suppress updating of the memory if the lock information is stored in the memory and a priority of the priority information is higher than a first priority of the first instruction. 
         [0006]    The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims. 
         [0007]    It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0008]      FIG. 1  depicts an example of a primary cache; 
           [0009]      FIG. 2  depicts a processing example; 
           [0010]      FIG. 3  depicts an example of lock control; 
           [0011]      FIG. 4  depicts an example of lock control; 
           [0012]      FIG. 5  depicts an example of lock cancellation; 
           [0013]      FIG. 6  depicts an example of lock control; 
           [0014]      FIG. 7  depicts an example of an arithmetic processing device; 
           [0015]      FIG. 8  depicts an example of a primary cache unit; 
           [0016]      FIG. 9  depicts an example of a pipeline; 
           [0017]      FIG. 10  depicts an example of a registration processing of a lock register; 
           [0018]      FIG. 11  depicts an example of a truth value table for updating a lock register; 
           [0019]      FIG. 12  depicts an example of an operation of an arithmetic processing device; 
           [0020]      FIG. 13  depicts an example of a lock register; 
           [0021]      FIG. 14  depicts an example of a truth value table; and 
           [0022]      FIG. 15  depicts an example of an updating of a lock register. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0023]      FIG. 1  depicts an example of a primary cache.  FIG. 1  depicts a primary cache unit of a plurality of processor cores (hereafter referred to as “cores”) that each function as an arithmetic processing unit and belong to a processor (multi-core processor). A primary cache control unit  100  of the primary cache unit includes a pipeline  101 . The pipeline  101  of the primary cache control unit  100  receives a request from an instruction control unit (IU)  122  that controls the execution of instructions and so forth, and executes processing corresponding to the request. The pipeline  101  carries out an exchange of data and so forth with a fetch port (FP)  102 , a tag unit (TAG)  103 , a move-in buffer (MIB)  104 , a move-out buffer (MOB)  105 , or a store buffer (STB)  106 . 
         [0024]    The fetch port  102  has a plurality of entries in which requests are retained, and retains requests issued from the instruction control unit  122  and inserts the requests into the pipeline  101 . The tag unit  103  carries out tag searches and so forth for determining whether or not the data requested by the requests is present in the primary cache memory. The store buffer  106  has a plurality of entries in which store requests are retained, and retains store requests issued from the instruction control unit  122  and inserts the store requests into the pipeline  101 . 
         [0025]    The move-in buffer  104  exchanges processing data regarding move-ins that transfer data for which a cache miss has occurred to a primary cache memory, with a secondary cache control unit (SX)  121  of a secondary cache unit that is shared by the plurality of cores. The move-out buffer  105  exchanges processing data regarding move-outs that eject data from the primary cache memory, with the secondary cache control unit  121 . 
         [0026]    A lock register  107 C is a register that retains addresses that are locked by the pipeline  101 , and one of which is allocated to each core. The lock register  107 C includes a field  108  that retains a lock flag (LOCK) indicating whether or not locking is in effect, a field  109  that retains a locking-target address (ADRS), and a counter (CNT)  110 . 
         [0027]    Operations from a core other than the core that corresponds to the lock register  107 C corresponding to the locking-target address registered in the lock register  107 C for which the lock flag has been set (locked state), are prohibited. The lock register  107 C is updated upon each move-in, and each core is able to lock one address at any given point in time. To ensure that the locked state does not continue, the counter  110  measures time, and the lock flag is cleared and the lock is released when a certain period of time elapses. 
         [0028]    For example, in the counter  110 , an initial value of 0 is set, and the value is incremented by 1 when a clock signal is input. For example, the value of the counter  110  is proportional to the elapsed time from a locking-target address being locked. If the value of the counter  110  reaches a threshold value, the lock flag of the lock register  107 C is cleared, and the locking of the registered address is released. 
         [0029]      FIG. 2  depicts a processing example. In  FIG. 2 , processing that includes the updating of a lock register is depicted. If an instruction involving locking, for example, a compare and swap (CAS) instruction that executes data fetch processing, comparison processing, and store processing with one instruction, is issued from the instruction control unit  122  or the like (S 201 ), the pipeline  101  of the primary cache control unit  100  initiates upon receiving a request for the issued instruction (S 202 ). The pipeline  101  of the primary cache control unit  100  confirms whether or not the data which is used for the execution of the instruction is in the primary cache memory (S 203 ). 
         [0030]    If the result of the confirmation is that the data is not in the primary cache memory (NO in S 203 ), the pipeline  101  of the primary cache control unit  100  issues a request for the data to the secondary cache control unit  121  (S 204 ). When the pipeline  101  of the primary cache control unit  100  acquires the data from the secondary cache control unit  121  (S 205 ), the acquired data is stored in the primary cache memory (S 206 ). 
         [0031]    After the data has been stored in the primary cache memory, the pipeline  101  of the primary cache control unit  100  updates the lock register  107 C, sets the lock flag, stores and locks the locking-target address (S 207 ). The pipeline  101  of the primary cache control unit  100  initializes the counter of the lock register  107 C (S 208 ). If it is confirmed that the data which is used for the execution of the instruction is in the primary cache memory (YES in S 203 ), the pipeline  101  of the primary cache control unit  100  executes the processing of the CAS instruction. 
         [0032]      FIG. 3  depicts an example of lock control. In  FIG. 3 , lock control in which a lock register is used is depicted. If a MOS request that requests data from the secondary cache control unit  121  is issued (S 301 ), the pipeline  101  of the primary cache control unit  100  initiates upon receiving the issued MOS request (S 302 ). The pipeline  101  of the primary cache control unit  100  confirms the value of the counter  110  of the lock register  107 C (S 303 ). 
         [0033]    If the result of the confirmation is that the value of the counter  110  has not reached the threshold value (NO in S 303 ), the pipeline  101  of the primary cache control unit  100  compares the address of the requested data and the address registered in the lock register  107 C (S 304 ). If the addresses match each other (YES in S 304 ), because the address of the requested data is locked, the MOS request from the secondary cache control unit  121  is aborted (S 305 ). 
         [0034]    If the value of the counter  110  has reached the threshold value (YES in S 303 ), or if the address of the requested data and the address registered in the lock register  107 C do not match (NO in S 304 ), the MOS request continues because the address of the requested data is open. When the MOS request continues, the pipeline  101  of the primary cache control unit  100  deletes the requested data from the primary cache memory (S 306 ), and carries out a write-back for the data in the secondary cache control unit  121  (S 307 ). 
         [0035]      FIG. 4  depicts an example of lock control.  FIG. 4  depicts a sequence indicating lock control that uses a lock register in the case where, in a processor having a plurality of cores, the plurality of cores execute instructions including therein a plurality of processes that are performed continuously. In  FIG. 4 , CAS instructions for which the access-target address is A is executed by a core 0 and a core 1. 
         [0036]    In order for the core 0 to execute a CAS instruction for the address A, the pipeline  101  of the primary cache control unit  100  of the core 0 stores data of the address A for which a cache miss has occurred, in a primary cache memory by using a move-in. At this time, the pipeline  101  of the primary cache control unit  100  sets the lock flag in the lock register  107 C, and also registers the address A as a locking-target address ( 1301 ). The address A is thereby locked. 
         [0037]    Due to the address A being locked by the core 0, access to the address A by a core other than the core 0 is blocked. Consequently, a move-in for the data of the address A, for which the cache miss by the core 1, which executes a CAS instruction for the address A, has occurred, is aborted ( 1311 ). After the data of the address A has been stored in the primary cache memory of the core 0, the pipeline  101  of the primary cache control unit  100  of the core 0 executes the processing of the CAS instruction ( 1302 ). After the processing of the CAS instruction has been completed, the pipeline  101  of the primary cache control unit  100  of the core 0 updates the lock register  107 C and clears the lock flag. For example, the locking of the address A is released, and access to the address A by all of the cores is allowed. 
         [0038]    If a move-in for the address A by the core 1 is retried, because the address A is not locked, the data of the address A is moved-in from the primary cache memory of the core 0 to the primary cache memory of the core 1. At this time, the pipeline  101  of the primary cache control unit  100  of the core 1 sets the lock flag in the lock register  107 C, and also registers the address A as a locking-target address ( 1312 ). The address A is thereby locked. After the data of the address A has been stored in the primary cache memory of the core 1, when the pipeline  101  of the primary cache control unit  100  of the core 1 executes the processing of the CAS instruction and the processing has been completed, the lock register  107 C is updated and the lock flag is cleared ( 1313 ). 
         [0039]      FIG. 5  depicts an example of lock release. In  FIG. 5 , a sequence diagram for lock release due to a timeout is depicted. In  FIG. 5 , the core 0 and the core 1 each execute CAS instructions in which the access-target address is A. Processes  1401 ,  1411 , and  1402  may each be substantially the same as or similar to the processes  1301 ,  1311 , and  1302  depicted in  FIG. 4 . In process  1401 , the address A is registered as the locking-target address in the lock register  107 C of the core 0, and then, when a certain period of time elapses (a timeout occurs), the value of the counter  110  reaches the threshold value, and the locking of the address A is released ( 1403 ). The following processes  1412  and  1413  may each be substantially the same as or similar to the processes  1312  and  1313  depicted in  FIG. 4 . 
         [0040]    In a memory control unit that controls access to a shared memory unit from a plurality of processing units, in a state in which an address is not locked, if writes to the lock register of the memory control unit are requested from the plurality of processing units at the same time, control may be performed to determine which write is given priority. 
         [0041]      FIG. 6  depicts an example of lock control. In  FIG. 6 , lock control that uses a lock register of a processor having a plurality of cores is depicted, and processing stalls have mutually occurred. For example, there is no limit to the updating of the lock register, and when processing stalls occur in the core 0 and the core 1 as depicted in  FIG. 6 , the processing performance of the processor may decline. 
         [0042]    In order to execute a CAS instruction, which is an instruction that involves locking, the pipeline  101  of the primary cache control unit  100  of the core 0 stores the data of the address A for which a cache miss has occurred, in the primary cache memory by using a move-in. At this time, the pipeline  101  of the primary cache control unit  100  updates the lock register  107 C and registers the address A as a locking-target address and locks the address A ( 1501 ). Since the address A is locked by the core 0, a move-in for the data of the address A, for which the cache miss by the core 1, which executes a CAS instruction, has occurred, is aborted ( 1511 ). 
         [0043]    After the address A has been locked by the core 0, in order to execute a page table fetch instruction, which is the subsequent instruction that involves locking, the pipeline  101  of the primary cache control unit  100  of the core 0 stores the data of an address B for which a cache miss has occurred, in the primary cache memory by using a move-in. At this time, the pipeline  101  of the primary cache control unit  100  updates the lock register  107 C and registers the address B as a locking-target address and locks the address B ( 1502 ). Since one lock register is allocated to each core, by locking the address B, the locking of the address A is released. 
         [0044]    After the locking of the address A has been released by the core 0, when a move-in for the address A by the core 1 is retried, because the address A is not locked, the data of the address A is moved-in from the primary cache memory of the core 0 to the primary cache memory of the core 1. At this time, the pipeline  101  of the primary cache control unit  100  of the core 1 updates the lock register  107 C and registers the address A as a locking-target address and locks the address A ( 1512 ). In this way, when the data of the address A is deleted from the primary cache memory of the core 0 despite it being prior to the completion of the CAS instruction by the core 0, the CAS instruction implemented by the core 0 is stalled without being able to complete (1503). 
         [0045]    After the address A has been locked by the core 1, in order to execute a page table fetch instruction, which is the subsequent instruction that involves locking, the pipeline  101  of the primary cache control unit  100  of the core 1 stores the data of an address C for which a cache miss has occurred, in the primary cache memory by using a move-in. At this time, the pipeline  101  of the primary cache control unit  100  updates the lock register  107 C and registers the address C as a locking-target address and locks the address C ( 1513 ). Due to the address C being locked, the locking of the address A is released. 
         [0046]    After the locking of the address A by the core 1 has been released, when the pipeline  101  of the primary cache control unit  100  of the core 0 attempts to carry out a move-in for the data of the address A in order to execute a CAS instruction, because the address A is not locked, the data of the address A is moved-in from the primary cache memory of the core 1 to the primary cache memory of the core 0 ( 1504 ). In this way, when the data of the address A is deleted from the primary cache memory of the core 1 despite it being prior to the completion of the CAS instruction implemented by the core 1, the CAS instruction by the core 1 is stalled without being able to complete (1514). 
         [0047]    Thereafter, when the processing of process  1502  and thereafter is repeated, the core 0 and the core 1 compete for the data of the address A prior to the completion of a CAS instruction, processing stalls mutually occur, and the processing performance of the processor may decline. 
         [0048]      FIG. 7  depicts an example of an arithmetic processing device. The arithmetic processing device depicted in  FIG. 7  may be a processor  10 , for example. The processor  10  includes a plurality of cores  11  that each function as an arithmetic processing unit, and a secondary cache unit  15 . 
         [0049]    In  FIG. 7 , four cores  11 - 0  to  11 - 3  are depicted; however, the quantity of the cores  11  possessed by the processor  10  as an arithmetic processing device may be any number. In  FIG. 7 , one secondary cache unit  15  is depicted; however, the quantity of secondary cache units  15  possessed by the processor  10  may be any number. For example, the processor  10  may have a plurality of secondary cache units  15 , and one secondary cache unit  15  may be made to correspond to each set of the cores  11 , which have been divided into a plurality of sets, and the secondary cache units  15  may be shared by the plurality of cores  11 . 
         [0050]    Each of the cores  11  includes an instruction control unit  12 , an arithmetic unit  13 , and a primary cache unit  14 . The instruction control unit  12  controls the execution of instructions, and requests processing corresponding to the instructions. The arithmetic unit  13  performs arithmetic in accordance with the control implemented by the instruction control unit  12 . 
         [0051]    The primary cache unit  14  includes a primary cache control unit that receives requests from the instruction control unit  12 , and a primary cache memory that retains data, and carries out processing for the requests from the instruction control unit  12 . For example, when a data transfer request is received from the instruction control unit  12 , the primary cache control unit of the primary cache unit  14  returns the requested data if that data is present the primary cache memory, and issues a data transfer request to the secondary cache unit  15  if the data is not present. 
         [0052]    The secondary cache unit  15  includes a secondary cache control unit that receives requests from the primary cache units  14  of the cores  11 , and a secondary cache memory that retains data. For example, when a data transfer request is received from a primary cache unit  14 , the secondary cache control unit of the secondary cache unit  15  returns the requested data if that data is present in the secondary cache memory, and issues a data transfer request to an external main storage unit  16  if the data is not present. 
         [0053]      FIG. 8  depicts an example of a primary cache unit. In  FIG. 8 , a primary cache unit possessed by each core  11  depicted in  FIG. 7  is depicted. The primary cache control unit  100  depicted in  FIG. 8  includes a pipeline. 
         [0054]    The pipeline  101  of the primary cache control unit  100  receives a request from an instruction control unit (IU)  122  that controls the execution of instructions and so forth, and executes processing corresponding to the request. The pipeline  101  exchanges data and so forth with a fetch port (FP)  102 , a tag unit (TAG)  103 , a move-in buffer (MIB)  104 , a move-out buffer (MOB)  105 , or a store buffer (STB)  106 . 
         [0055]    The pipeline  101  includes the five stages of a priority stage (P), a TAG/TLB access stage (T), a matching stage (M), a buffer access stage (B), and a result stage (R). The pipeline  101  may have five stages; however, the quantity of the stages may be any number. For example, a pipeline having four stages may be used. 
         [0056]    In the priority stage, requests to be inserted into the pipeline processing are selected and inserted in accordance with the order of priority. In the TAG/TLB access stage, a TAG memory in which tag data and so forth is retained is accessed, conversion from virtual addresses to physical addresses is carried out in a translation lookaside buffer (TLB), and cache memory access is carried out. 
         [0057]    In the matching stage, the output from the TAG memory and the physical address converted by the TLB are compared, and a read-out way of the cache method is determined. In the buffer access stage, the result of the matching stage is used to select the way, and data is passed to the arithmetic unit. In the result stage, a checking result regarding data correctness in the buffer access stage is reported. 
         [0058]    The fetch port  102  includes a plurality of entries in which requests are retained, and retains requests issued from the instruction control unit  122 . The requests retained in the fetch port  102  are read out of order and are inserted into the pipeline  101 . The tag unit  103  carries out tag searches and so forth for determining whether or not the data requested by the requests is present in the primary cache memory. 
         [0059]    The move-in buffer  104  exchanges processing data regarding move-ins, which cause data for which a cache miss has occurred to be transferred to the primary cache memory, with a secondary cache control unit (SX)  121  of the secondary cache unit  15  shared by the plurality of cores. The move-in buffer  104  may include a plurality of entries in which requests that include addresses (ADRS) and instruction group codes (CODE) are retained. 
         [0060]    The move-out buffer  105  exchanges processing data regarding move-outs, which eject data from the primary cache memory, with the secondary cache control unit  121 . The store buffer  106  includes a plurality of entries in which store requests are retained, and retains store requests issued from the instruction control unit  122 . The store requests retained in the store buffer  106  are read out of order and are inserted into the pipeline  101 . 
         [0061]    A lock register  107 A may be a register that retains addresses that are locked by the pipeline  101 , and may be allocated to each core. The lock register  107 A includes a field  108  that retains a lock flag (LOCK) indicating whether or not locking is in effect, a field  109  that retains a locking-target address (ADRS), a field  111  that retains an instruction group code (CODE), and a counter (CNT)  110 . The group codes may be information that indicates the priorities of instructions, and may be code values which have values that differ depending on the priorities of the instructions. 
         [0062]    Operations performed, by cores other than the core corresponding to the lock register  107 A, with respect to the locking-target address registered in the lock register  107 A in which the lock flag has been set (locked state) are prohibited. The lock register  107 A is updated based on the execution of move-ins, and one address may be locked by each core at any given point in time. To ensure that the locked state does not continue, the counter  110  measures time, and the lock flag is cleared and the lock is released when a certain period of time elapses. 
         [0063]    For example, in the counter  110 , the initial value may be set at 0, and the value is incremented by 1 when a clock signal is input. For example, the value of the counter  110  is proportional to the elapsed time from a locking-target address being locked. As the counter  110 , a counter with which the output value is proportional to the elapsed time from a locking-target address being locked may be used. If the value of the counter  110  reaches a threshold value, the lock flag of the lock register  107 A is cleared, and the locking of the registered address is released. 
         [0064]      FIG. 9  depicts an example of a pipeline. In  FIG. 9 , the pipeline of the primary cache unit depicted in  FIG. 8  is depicted. In  FIG. 9 , the same symbols are appended to elements having substantially the same or similar functions as the elements depicted in  FIG. 8 , and descriptions thereof may have been omitted or reduced. 
         [0065]    A selection unit  131  that corresponds to the priority stage of the pipeline selects a request to be inserted into pipeline processing in accordance with the order of priority, from among requests issued by each of the fetch port  102 , the move-in buffer  104 , the store buffer  106 , the instruction control unit  122 , and a buffer (SXOQ)  134  that retains data requests from the secondary cache control unit  121 . In  FIG. 9 , T, M, B, and R represent the TAG/TLB access stage, the matching stage, the buffer access stage, and the result stage of the pipeline, respectively. 
         [0066]    An address comparison unit  132  compares an address at the buffer access stage (B) of a request being executed by the pipeline, and an address retained in the lock register  107 A, and outputs the comparison result. If the comparison result output by the address comparison unit  132  indicates that the addresses match, and the request is a request relating to a data request issued from another core by way of the buffer  134 , the request is aborted in the result stage of the pipeline. 
         [0067]    A code comparison unit  133  compares a group code at the buffer access stage (B) of a request being executed by the pipeline, and a group code retained in the lock register  107 A. If the priority based on the group code at the buffer access stage (B) is the same as or higher than the priority based on the group code retained in the lock register  107 A, the code comparison unit  133  updates the lock register  107 A. If the lock register  107 A is not locking an address, the code comparison unit  133  updates the lock register  107 A regardless of the group code comparison result. In the updating of the lock register  107 A, the lock flag is set, the access-target address and the group code of the request being executed in the buffer access stage (B) are registered, and the counter is initialized. 
         [0068]    The operations including the updating of a lock register and operations for lock control in which a lock register is used in  FIG. 7  to  FIG. 9  may be substantially the same as or similar to the operations depicted in  FIG. 2  and  FIG. 3 . For example, when an instruction that involves locking is executed, different from the operation depicted in  FIG. 2 , it may be determined whether or not to update the lock register as depicted in  FIG. 10 , and registering in the lock register may be carried out in accordance with the determination result. 
         [0069]      FIG. 10  depicts an example of a registration processing of a lock register. In order to execute an instruction that involves locking such as an atomic instruction, a request for a move-in that causes the data of an access-target address to be stored in a primary cache memory is issued and inserted into the pipeline  101  of the primary cache control unit  100  (S 101 ). The pipeline  101  of the primary cache control unit  100  confirms whether the lock flag of the lock register  107 A has been set, for example, whether a locked state is in effect (S 102 ). 
         [0070]    If the result of the confirmation is that the lock flag has been set (YES in S 102 ), the pipeline  101  of the primary cache control unit  100  determines whether or not to update the lock register, based on the value of the counter  110  and the group code of the instruction (S 103 ). The pipeline  101  of the primary cache control unit  100  may determine to update the lock register if the value of the counter  110  has reached the threshold value. If the value of the counter  110  has not reached the threshold value, the pipeline  101  of the primary cache control unit  100  compares a group code (registered code) registered in the lock register and the group code (new code) of a request from the move-in buffer  104 , and may determine to update the lock register if the priority based on the new code is the same as or higher than the priority based on the registered code. For example, if the value of the counter  110  has not reached the threshold value, the pipeline  101  of the primary cache control unit  100  may determine to not update the lock register if the priority based on the registered code is higher than the priority based on the new code. 
         [0071]      FIG. 11  depicts an example of a truth value table for updating a lock register. For example, from among instructions that involve locking, the priority of CAS instructions may be set to be high (for example, group code=1), and the priority of instructions other than CAS instructions may be set to be low (for example, group code=0). In this case, the pipeline  101  of the primary cache control unit  100  determines whether to update (true) the lock register or not (false), in accordance with the truth value table depicted in  FIG. 11 . For example, if the value of the counter  110  has the highest priority, and the value of the counter  110  has reached the threshold value, the lock register  107 A may be updated. A new CAS instruction, for example, a CAS instruction from the move-in buffer  104 , may have the second priority, a locked CAS instruction may have the third priority, and instructions other than a new CAS, for example, instructions (/CAS instruction) from the move-in buffer  104 , may have the fourth priority. 
         [0072]    If the lock flag has not been set (NO in S 102 ), or, based on the determination made in operation S 103 , it has been determined that the lock register has been updated (YES in S 103 ), the pipeline  101  of the primary cache control unit  100  performs a rewrite of the lock register  107 A (S 104 ). In the rewrite of the lock register  107 A, the lock flag is set, and also the access-target address and the group code of the request from the move-in buffer  104  are registered. Based on the determination made in operation S 103 , if it is determined that the lock register has not been updated (NO in S 103 ), the pipeline  101  of the primary cache control unit  100  suppresses the updating of the lock register  107 A, and continues with processing relating to a move-in without performing a rewrite of the lock register  107 A. 
         [0073]      FIG. 12  depicts an example of an operation of an arithmetic processing device.  FIG. 12  depicts lock control that uses a lock register in the case where, in a processor, a plurality of cores execute an instruction involving locking that includes therein a plurality of processes that are continuously performed, for example, a CAS instruction or a page table fetch instruction. A CAS instruction may have a higher priority than a page table fetch instruction. When the operation depicted in  FIG. 12  is started, in the lock registers  107 A of the core 0 and the core 1, the lock flags are cleared; for example, the locking of an address is not carried out. 
         [0074]    In order for a CAS instruction for an access-target address A to be executed by the core 0, the pipeline  101  of the primary cache control unit  100  of the core 0 stores the data of the address A for which a cache miss has occurred, in the primary cache memory by using a move-in. At this time, because the lock flag of the lock register  107 A of the core 0 has not been set, the pipeline  101  of the primary cache control unit  100  updates the lock register  107 A, sets the lock flag, and also registers the group code of the CAS instruction and the address A as a locking-target address and locks the address A ( 601 ). Due to the core 0 having locked the address A, a move-in for the data of the address A by the core 1 in order to execute a CAS instruction for the access-target address A in the core 1 is aborted ( 611 ). 
         [0075]    After the core 0 has locked the address A, in order for the core 0 to execute a page table fetch instruction for an access-target address B that is the subsequent instruction, the pipeline  101  of the primary cache control unit  100  of the core 0 stores the data of the address B for which a cache miss has occurred, in the primary cache memory by using a move-in. At this time, the pipeline  101  of the primary cache control unit  100  compares the group code registered in the lock register  107 A and the group code of the request from the move-in buffer  104 , for example, the group code of the page table fetch instruction. Because the priority of the page table fetch instruction based on the group code is lower than the priority of the CAS instruction, the pipeline  101  of the primary cache control unit  100  determines to not update the lock register  107 C. Therefore, the lock register  107 C retains the address A as the locking-target address, and the locking of the address A continues ( 602 ). 
         [0076]    Thereafter, even if a move-in for the address A is retried by the core 1, because the locking of the address A by the core 0 continues, the move-in for the data of the address A by the core 1 is aborted ( 612 ). The pipeline  101  of the primary cache control unit  100  of the core 0 executes the processing of the CAS instruction ( 603 ). After the processing of the CAS instruction has been completed, the pipeline  101  of the primary cache control unit  100  of the core 0 updates the lock register  107 C and clears the lock flag. For example, the locking of the address A by the core 0 is released, and access to the address A by all of the cores is allowed. 
         [0077]    When a move-in for the address A by the core 1 is retried, because the address A is not locked, the data of the address A is moved-in from the primary cache memory of the core 0 to the primary cache memory of the core 1. At this time, because the lock flag of the lock register of the core 1 has not been set, the pipeline  101  of the primary cache control unit  100  of the core 1 updates the lock register  107 A, sets the lock flag, and also registers the group code of the CAS instruction and registers the address A as a locking-target address and locks the address A ( 613 ). 
         [0078]    Due to the control described above, there may be a decrease in the deletion of the data of the address A from the primary cache memories of the cores prior to the CAS instruction for the address A being completed. There may be a decrease in the number of times that CAS instruction processing stalls, and the processing performance of the processor may improve. 
         [0079]    If the lock flag is set in the lock register, the pipeline  101  of the primary cache control unit  100  determines whether or not to update the lock register, based on the value of the counter and the group code of the instruction.  FIG. 13  depicts an example of a lock register. As depicted in  FIG. 13 , the lock register  107 B may be provided with a field  112  that stores TOQ information that indicates whether or not an instruction having a locked address is top of the queue (TOQ) when acquired from the move-in buffer  104 , for example, whether or not the instruction has been stored the longest. Based on whether or not a request is TOQ when acquired from the move-in buffer  104 , the pipeline  101  of the primary cache control unit  100  may determine whether or not to update the lock register  107 B. In  FIG. 13 , the same symbols are appended to elements that are substantially the same as or similar to the elements depicted in  FIG. 8 , and descriptions thereof may have been omitted or reduced. 
         [0080]    In the case where whether or not a request is TOQ is taken into consideration, the pipeline  101  of the primary cache control unit  100  may determine to update the lock register if the value of the counter  110  has reached the threshold value. In the case where the value of the counter  110  has not reached the threshold value, the pipeline  101  of the primary cache control unit  100  may determine to update the lock register when a request from the move-in buffer  104  is a request that is TOQ. In the case where a request from the move-in buffer  104  is a request that is TOQ, and a request for which the address is locked is a request that is TOQ when acquired from the move-in buffer  104 , being TOQ may not be taken into consideration as a condition for determining whether or not to update the lock register. 
         [0081]    In the case where the value of the counter  110  has not reached the threshold value, and a request from the move-in buffer  104  is a request that is not TOQ, the pipeline  101  of the primary cache control unit  100  compares a group code (registered code) registered in the lock register and the group code (new code) of the request from the move-in buffer  104 . In the case where the priority based on the new code is the same as or higher than the priority based on the registered code, the pipeline  101  may determine to update the lock register. In the case where the value of the counter  110  has not reached the threshold value, and the request from the move-in buffer  104  is a request that is not TOQ, the pipeline  101  may determine to not carry out an update of the lock register if the request having a locked address is a request that is TOQ when acquired from the move-in buffer  104 . 
         [0082]      FIG. 14  depicts an example of a truth value table. In  FIG. 14 , a truth value table for updating the lock register depicted in  FIG. 13  is depicted. For example, from among instructions that involve locking, the priority of CAS instructions may be set to be high (for example, group code=1), and the priority of instructions other than CAS instructions may be set to be low (for example, group code=0). In this case, the pipeline  101  of the primary cache control unit  100  determines whether to update (true) the lock register or not (false), in accordance with the truth value table depicted in  FIG. 14 . For example, if the value of the counter  110  has the highest priority, and the value of the counter  110  has reached the threshold value, the lock register  107 B is updated. For example, the lock register  107 B may be updated invariably. An instruction that is TOQ may have the second priority, a CAS instruction may have the third priority, and an instruction (/CAS instruction) other than a CAS may have the fourth priority. If the compared instructions are both CAS instructions, the new CAS instruction, for example, a CAS instruction from the move-in buffer  104 , may be given priority. If the compared instructions are both instructions other than a CAS, the new instruction that is not a CAS, for example, an instruction (/CAS instruction) from the move-in buffer  104  for example, may be given priority. 
         [0083]    For example, two priorities may be set for CAS instructions and instructions other than CAS instructions. Three or more priorities for instructions may be set.  FIG. 15  depicts an example of an updating of a lock register. In  FIG. 15 , four priorities are set. In  FIG. 15 , CAS indicates a CAS instruction, ST1 indicates a store instruction, TRF indicates a page table fetch instruction, and IU indicates an instruction other than the aforementioned (hereafter, other instructions). The priorities for determining whether or not to update the lock register if the lock flag is set in the lock register are as follows. 
         [0084]    The priority of a TOQ request for a CAS instruction is the highest, and the priority of a request for a store instruction is lower than the priority of a TOQ request for a CAS instruction (CAS*TOQ&gt;ST1). The priority of a TOQ request for a page table fetch instruction is lower than the priority of a request for a store instruction (ST1&gt;TRF*TOQ), and the priority of a TOQ request for other instructions is lower than the priority of a TOQ request for a page table fetch instruction (TRF*TOQ&gt;IU*TOQ). The priority of a non-TOQ request for a CAS instruction is lower than the priority of a TOQ request for other instructions (IU*TOQ&gt;CAS*/TOQ), and the priority of a non-TOQ request for a page table fetch instruction is lower than the priority of a non-TOQ request for a CAS instruction (CAS*/TOQ&gt;TRF*/TOQ). The priority of a non-TOQ request for other instructions is lower than the priority of a non-TOQ request for a page table fetch instruction (TRF*/TOQ&gt;IU*/TOQ), and is the lowest. 
         [0085]    The pipeline  101  of the primary cache control unit  100  determines whether or not to update the lock register in accordance with the priority, and if the priority of the subsequent instruction is the same as or higher than the priority of the preceding instruction, it is determined that the lock register is to be updated and the lock register is rewritten in accordance with the subsequent instruction. If the priority of the subsequent instruction is lower than the priority of the preceding instruction, it is determined that the lock register is not to be updated and the information of the lock register is retained. 
         [0086]    In a multi-thread processor in which each core is able to execute a plurality of threads at the same time, instructions that involve locking may be executed in parallel by a plurality of threads within a certain core. In this kind of multi-thread processor, a plurality of lock registers may be mounted with respect to the each core. In this case, a plurality of lock registers are allocated with respect to one thread. When a lock register is updated, the pipeline  101  of the primary cache control unit  100  may determine, as described below, the lock register to be updated. 
         [0087]    When a request for a move-in from the move-in buffer  104  has been performed, if the lock flags of all of the lock registers have been set, a lock register that is able to be rewritten is determined in accordance with the priorities, and the determined lock register is updated. At this time, if a plurality of lock registers are able to be rewritten, for example, the oldest from thereamong, for example, the lock register having the counter value that is closest to the threshold value, may be updated. If the result determined in accordance with the priorities is that there is no register that is able to be rewritten, lock register updating may not be performed. 
         [0088]    When a request for a move-in from the move-in buffer  104  has been performed, a lock register having a cleared lock flag is updated. If there are plurality of lock registers having cleared lock flags, for example, a lock register having a low priority based on the group codes registered in the lock registers may be updated. 
         [0089]    Priorities are set with respect to instructions that involve the locking of an address. If the priority of a preceding instruction that involves locking for which an address is registered in a lock register is the same as or lower than the priority of the subsequent instruction that involves locking, the lock register is updated and the access-target address of the subsequent instruction is locked. If the priority of the preceding instruction for which the address is registered in the lock register is higher than the priority of the subsequent instruction, the updating of the lock register is suppressed and the locking of the access-target address of the preceding instruction is continued. Therefore, there may be a decrease in the deletion of data that is used for the execution of an instruction involving locking from the primary cache memory of a core prior to the completion of the instruction. In addition, the number of times that instruction processing stalls may decrease, and the processing performance of the processor may improve. 
         [0090]    All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.

Technology Category: g