P
USRE38679EExpiredUtilityPatentIndex 74

Data processor and method of processing data

Assignee: MITSUBISHI ELECTRIC CORPPriority: Feb 7, 1996Filed: May 4, 2001Granted: Dec 28, 2004
Est. expiryFeb 7, 2016(expired)· nominal 20-yr term from priority
Inventors:MATSUO MASAHITOYOSHIDA TOYOHIKO
G06F 9/323G06F 9/322G06F 9/30072G06F 9/3822G06F 9/30167G06F 9/30149G06F 9/30145G06F 9/30178G06F 9/30014G06F 9/3889G06F 9/325G06F 9/3552G06F 9/3853G06F 9/3893
74
PatentIndex Score
12
Cited by
30
References
48
Claims

Abstract

A second decoder ( 114 ) of an instruction decode unit ( 119 ) decodes an operation code for a multiply-add operation, and a second operation unit ( 117 ) receives two data stored in a register file ( 115 ) to perform the multiply-add operation. In parallel with the operations of the second decoder ( 114 ) and the second operation unit ( 117 ), a first decoder ( 113 ) of the instruction decode unit ( 119 ) decodes an operation code for 2 data load, and an operand access unit ( 104 ) causes two data (e.g., n bits each) stored in an internal data memory ( 105 ) to be transferred in parallel in the form of combined 2n-bit data to a first operation unit ( 116 ). Then, two predetermined registers of the register file ( 115 ) store the respective n-bit data from the first operation unit ( 116 ).

Claims

exact text as granted — not AI-modified
We claim:  
     
       1. A data processor comprising: 
       a first memory for storing an instruction including a first operation code and a second operation code;  
       a second memory for storing data values;  
       a first decoder receiving said first operation code from said first memory for decoding said first operation code;  
       a second decoder receiving said second operation code from said first memory for decoding said second operation code, said first and second operation codes being decoded in parallel;  
       a register file including a plurality of registers for storing data values to be transferred from and to said second memory;  
       an operation unit for receiving a first data value stored in a first register of said register file to perform an arithmetic operation using said first data value in response to a first control signal, said first control signal being a decoded result of said first operation code output from said first decoder; and  
       an operand access unit for performing a memory access to transfer in parallel second and third data values stored in said second memory to second and third registers of said register file, respectively, in response to a second control signal, said second control signal being a decoded result of said second operation code output from said second decoder, said memory access of said operand access unit and said arithmetic operation of said operation unit are performed in parallel.  
     
     
       2. The data processor of  claim 1 , 
       wherein said second and third data values each are n bits in length, where n is an integral number, and said second and third data values are combined together into a 2n-bits data value when said second and third data values are transferred to said register file.  
     
     
       3. The data processor of  claim 1 , wherein said operation unit comprises: 
       a multiplier for multiplying together a fourth data value stored in a fourth register of said register file and said first data value; and  
       an adder for adding together at least a result from said multiplier and a value stored in said register file to cause said register file to store a result from said adder.  
     
     
       4. The data processor of  claim 1 , wherein said operation unit comprises: 
       a multiplier for multiplying together a fourth data value stored in a fourth register of said register file and said first data value,  
       an accumulator for holding an accumulated data value which is a result of an operation, and  
       an adder for adding together at least a result from said multiplier and the accumulated data value held in said accumulator to cause said accumulator to hold a result from said adder.  
     
     
       5. The data processor of  claim 1 , 
       wherein said operation unit receives a fourth data value stored in a fourth register of said register file, said arithmetic operation in said operation unit including a multiplying operation of said first and fourth data values and an adding operation at least on a result of said multiplying operation and a fifth data stored in said register file or an accumulator provided with said operation unit;  
       said operand access unit causes an operand address to be applied to said second memory simultaneously with the multiplying operation of said operation unit in a first period, and causes said second and third data values to be transferred from said second memory in response to the operand address simultaneously with the adding operation of said operation unit in a second period following said first period.  
     
     
       6. The data processor of  claim 5 , 
       wherein said operand address is stored in a fifth register of said register file and operand access unit causes said fifth register to be updated into another operand address in said first period.  
     
     
       7. A data processor comprising: 
       a first memory for storing an instruction including a first operation code and a second operation code;  
       a second memory for storing data values;  
       a first decoder receiving said first operation code from said first memory, for decoding said first operation code;  
       a second decoder receiving said second operation code from said first memory, for decoding said second operation code, said first and second operation codes being decoded in parallel;  
       a register file including a plurality of registers for storing data values to be transferred from and to said second memory;  
       an operation unit for receiving a first data value stored in a first register of said register file to perform an arithmetic operation using said first data value in response to a first control signal, said first control signal being a decoded result of said first operation code output from said first decoder; and  
       an operand access unit for performing a memory access to transfer in parallel second and third data values stored respectively in second and third registers of said register file to said second memory in response to a second control signal, said second control signal being a decoded result of said second operation code output from said second decoder, said memory access of said operand access unit and said arithmetic operation of said operation unit are performed in parallel.  
     
     
       8. The data processor of  claim 7 , 
       wherein said second and third data values each are n bits in length, where n is an integral number, and said second and third data values are combined together into a 2n-bits data value when said second and third data values are transferred to said second memory.  
     
     
       9. The data processor of  claim 7 , wherein said operation unit comprises: 
       a multiplier for multiplying together a fourth data value stored in a fourth register of said register file and said first data value, and  
       an adder for adding together at least a result from said multiplier and a value stored in said register file to cause said register file to store a result from said adder.  
     
     
       10. The data processor of  claim 7 , wherein said operation unit includes 
       a multiplier for multiplying together a fourth data value stored in a fourth register of said register file and said first data value,  
       an accumulator for holding an accumulated data value which is a result of an operation, and  
       an adder for adding together at least a result from said multiplier and the accumulated data value held in said accumulator to cause said accumulator to hold a result from said adder.  
     
     
       11. A data processor comprising: 
       a memory for storing data;  
       a first instruction decoder receiving first and second operation codes, for decoding said first and second operation codes to output first and second control signals respectively;  
       a second instruction decoder receiving third and fourth operation codes, for decoding said third and fourth operation codes to output third and fourth control signals, respectively, said first and third operation codes being decoded in parallel and said second and fourth operation codes being decoded in parallel;  
       a register file connected to said memory and including a plurality of registers each for storing at least one of data and an operand address;  
       an operation unit for performing an arithmetic operation on the data stored in said register file; and  
       a memory access device operated in parallel with said operation unit for causing said operand address stored in said register file to be applied to said memory and for updating said operand address,  
       wherein, in a first processing, first and second decoders receive said first and third operation codes respectively, and executed in parallel are processing of:  
       (a) said operation unit to receive first data stored in a first register of said register file to perform an arithmetic operation in response to said first control signal, and  
       (b) said memory access device to cause a first operand address stored in a second register of said register file to be applied to said memory to cause second data stored in said memory to be transferred to a third register of said register file and to update said first operand address to write a second operand address into said second register in response to said third control signal, and  
       wherein, in a second processing, said first and second decoders receive said second and fourth operations codes respectively, and executed in parallel are processing of:  
       (c) said operation unit to receive said second data stored in said third register of said register file to perform an arithmetic operation in response to said second control signal, and  
       (d) said memory access device to cause said second operand address stored in said second register of said register file to be applied to said memory to cause third data stored in said memory to be transferred to a fourth register of said register file and to update said second operand address to write a third operand address into said second register in response to said fourth control signal,  
       said first processing and said second processing being executed by pipeline control.  
     
     
       12. A method of processing data by a data processor which includes a memory for storing data, a register file connected to said memory and including a plurality of registers each for storing at least one of data and an operand address, an operation unit for receiving the data stored in said register file to perform an arithmetic operation, and a memory access device for causing the operand address stored in said register file to be applied to said memory, said method comprising the steps of: 
       (a) transferring, in parallel, first and second data stored in a first area of said memory to first and second registers of said register file, respectively;  
       (b) transferring, in parallel, third and fourth data stored in a second area of said memory to third and fourth registers of said register file, respectively;  
       (c) applying said first data stored in said first register and said third data stored in said third register to said operation unit to perform an arithmetic operation of said first and third data by said operation unit; and  
       (d) applying said second data stored in said second register and said fourth data stored in said fourth register to said operation unit to perform an arithmetic operation of said second and fourth data by said operation unit.  
     
     
       13. The method of  claim 12 , further comprising the steps of: 
       (e) transferring, in parallel, fifth and sixth data stored in a third area of said memory to fifth and sixth registers of said register file, respectively; and  
       (f) transferring, in parallel, seventh and eighth data stored in a fourth area of said memory to seventh and eighth registers of said register file, respectively,  
       wherein one of the steps (c) and (d) is executed in parallel with at least one of the steps (e) and (f).  
     
     
       14. The method of  claim 13 , 
       wherein said third area is the same as said first area, and said fourth area is the same as said second area.  
     
     
       15. The method of  claim 12 , 
       wherein said first and second data each are n bits in length, where n is an integral number, and wherein said first and second data are combined together into 2n-bit data when said first and second data are transferred to said register file.  
     
     
       16. The method of  claim 12 , 
       wherein the step (c) comprises the sub-steps of:  
       multiplying said first and third data together; and  
       adding data stored in a ninth register to the result of multiplication to store the result of addition as ninth data in said ninth register, and  
       wherein the step (d) comprises the sub-steps of:  
       multiplying said second and fourth data together; and  
       adding said ninth data stored in said ninth register to the result of multiplication to store the result of addition in said ninth register.  
     
     
       17. A data processor comprising: 
       an instruction decoder for decoding first and second operation codes to output first and second control signals, respectively;  
       a register file including a plurality of registers;  
       a memory for storing data;  
       an operand access unit for performing a first memory access to transfer first and second data in parallel from a first area of said memory to said register file in response to said first control signal, and performing a second memory access to transfer third and fourth data in parallel from a second area of said memory to said register file in response to said second control signal; and  
       an operation unit receiving said first to fourth data from said register file, for performing a first arithmetic operation on said first and third data and a second arithmetic operation on said second and fourth data.  
     
     
       18. The data processor of  claim 17 , 
       wherein said first arithmetic operation is a multiplying operation on said first and third data and said second arithmetic operation is multiplying operation on said second and fourth data, and  
       said operation unit generates a value which is a result of adding a result of said first arithmetic operation, a result of said second arithmetic operation and fifth data in said register file or an accumulator provided with said operation unit.  
     
     
       19. The data processor of  claim 17 , 
       wherein said instruction decoder decodes third and fourth operation codes to output third and fourth control signals, respectively;  
       said operation unit performs said first arithmetic operation in response to said third control signal and performs said second arithmetic operation in response to said fourth control signal.  
     
     
       20. The data processor of  claim 17 , 
       wherein said first to fourth data have the same data lengths.  
     
     
       21. The data processor of  claim 17 , 
       a first operand address is stored in a register of said register file,  
       said operand access unit causes said first operand address to be applied to said memory and said register to be updated into a second operand address in response to said first control signal, and causes said second operand address stored in said register to be applied to said memory in response to said second control signal.  
     
     
       22. The data processor of  claim 17 , wherein: 
       a first operand address is stored in a first register of said register file, and a second operand address is stored in a second register of said register file, and  
       said operand access unit causes said first operand address to be applied to said memory and said first register to be updated into a third operand address in response to said first control signal, and causes said second operand address to be applied to said memory and said second register to be updated into a fourth operand address in response to said second control signal.  
     
     
       23. A data processor comprising: 
       a first decoder for decoding operation codes including first and second operation codes;  
       an operand access unit for outputting a first address to receive in parallel first and second data values included in a first area of a memory in accordance with decoding the first operation code by said first decoder, and for outputting a second address to receive in parallel third and fourth data values included in a second area of the memory in accordance with decoding the second operation code by said first decoder; and  
       an operation unit coupled to said operand access unit and receiving said first to fourth data values, for calculating a first product of said first and third data values, and a second product of said second and fourth data values.  
     
     
       24. The data processor of  claim 23 , further comprising: 
       a first register for storing the first address and outputting the first address to said operand access unit;  
       a second register for storing the second address and outputting the second address to said operand access unit; and  
       an address calculator, for calculating a third address on the basis of the first address in a first period in accordance with decoding the first operation code by said first decoder to write back the third address to said first register, and calculating a fourth address on the basis of the second address in a second period following the first period in accordance with decoding the second operation code by said first decoder to write back the fourth address to said second register.  
     
     
       25. The data processor of  claim 24 , wherein: 
       said address calculator calculates the third address by adding the first address with a predetermined value and calculates the fourth address by adding the second address with the same value as the predetermined value.  
     
     
       26. The data processor of  claim 23 , wherein: 
       said operation unit includes an accumulator, said operation unit calculating a sum of a value stored in said accumulator, the first product and the second product.  
     
     
       27. The data processor of  claim 23 , further comprising: 
       a second decoder operative in parallel with said first decoder, for decoding operation codes, wherein  
       an operation unit calculates the first product in accordance with decoding the a third operation code by said second decoder, and the second product of said second and fourth data values in accordance with decoding the a fourth operation code by said second decoder.  
     
     
       28. A method of processing data by a data processor connected to a memory and executing instructions described in a program, said method comprising the steps of: 
       transferring in parallel first and second data values included in a first area of the memory to said data processor;  
       transferring in parallel third and fourth data value included in a second area of the memory to said data processor;  
       calculating a product of the first and third data values in the data processor; and  
       calculating a product of the second and fourth data values in the data processor.  
     
     
       29. A data processor comprising: 
       
         a first decoder configured to receive a decode a first operation code specifying a data load operation;  
       
         a second decoder configured to receive and decode a second operation code specifying a multiply - add operation;    
       
         a first operation unit configured to provide a memory with an operand address of said first operation code, at least one said operand address configured to cause plural operand data to be loaded in parallel from the memory in response to a first control signal being a decoded result of said first operation code output from said first decoder;  
       
       
         a plurality of registers configured to receive and store data values included in operand data loaded from the memory; and  
       
         a second operation unit configured to receive data values from said registers, and to perform the multiply - add operation in response to a second control signal being a decoded result of said second operation code output from said second decoder;    
         wherein said multiply - add operation includes a multiplying operation of one by another of the data values received by the second operation unit, and an adding operation utilizing a result of said multiplying operation.   
     
     
       30. A data processor comprising: 
       
         a first decoder configured to receive and decode a first operation code specifying a data load operation;  
       
         a second decoder configured to receive and decode a second operation code specifying a multiply - add operation;    
       
         a plurality of registers including a register configured to store an operand address of said first operation code and to output the operand address to a memory to cause, for at least one said operand address, plural operand data to be loaded in parallel from the memory, said plurality of registers including different two registers configured to receive and store first and second data values, respectively, included in the plural operand data loaded in parallel from the memory;  
       
       
         an arithmetic unit configured to generate a new operand address using the operand address and to update contents of the register storing the operand address into the new operand address in response to a first control signal being a decoded result of the first operation code output from said first decoder; and  
       
         an operation unit configured to receive third and fourth data values stored in different two of said plurality of registers, respectively, and to perform the multiply - add operation in response to a second control signal being a decoded result of said second operation code output from said second decoder;    
         wherein said multiply - add operation includes a multiplying operation of the third data value by the fourth data value and an adding operation utilizing a result of said multiplying operation.   
     
     
       31. A data processor comprising: 
       
         a first decoder configured to receive and decode a first operation code specifying a data load operation;  
       
         a second decoder configured to receive and decode a second operation code specifying a multiply - add operation;    
       
         a first operation unit configured to provide a memory with an operand address of said first operation code to cause, for at least one said operand address, plural operand data to be loaded in parallel from the memory in response to a first control signal being a decoded result of said first operation code output from said first decoder;  
       
       
         a register file configured to store first and second data values which are included in the plural operand data loaded in parallel from the memory; and  
       
         a second operation unit configured to receive third and fourth data values stored in said register file and to perform the multiply - add operation in response to a second control signal being a decoded result of said second operation code output from said second decoder;    
         wherein said multiply - add operation includes a multiplying operation of the third data value by the fourth data value and an adding operation utilizing a result of said multiplying operation; and    
       
         wherein said second operation code has an operand specifying field capable of specifying one of the first and second data values as the third data value, and a data value different from said first and second data values as the fourth data value. 
       
     
     
       32. A data processor comprising: 
       
         a first decoder configured to receive and decode a first operation code specifying a data load operation;  
       
         a second decoder configured to receive and decode a second operation code specifying a multiply - add operation;    
       
         a register file configured to store an operand address of said first operation code and to output the operand address to a memory to cause, for at least one said operand address, plural operand data to be loaded in parallel from the memory, said register file further configured to store first and second data values which are included in the operand data loaded in parallel from the memory;  
       
       
         an arithmetic unit configured to generate a new operand address using the operand address and to update the operand address stored in said register file into the new operand address in response to a first control signal being a decoded result of the first operation code output from said first decoder; and  
       
         an operation unit configured to receive third and fourth data values stored in said register file and to perform the multiply - add operation in response to a second control signal being a decoded result of said second operation code output from said second decoder;    
         wherein said multiply - add operation includes a multiplying operation of the third data value by the fourth data value and an adding operation utilizing a result of said multiplying operation; and    
       
         wherein said second operation code has an operand specifying field capable of specifying one of the first and second data values as the third data value, and a data value different from said first and second data values as the fourth data value. 
       
     
     
       33. The data processor according to  claim 29 , wherein: 
       
         said first decoder sequentially decodes operation codes including said first operation code and specifying operations to be executed; and  
       
       
         said second decoder, operative in parallel with said first decoder, sequentially decodes operation codes including said second operation code and specifying operations to be executed. 
       
     
     
       34. The data processor according to  claim 29 , wherein: 
       
         said plurality of registers have a same bit length; and  
       
       
         said second operation code is capable of specifying each of said plurality of registers as an operand of said second operation code. 
       
     
     
       35. The data processor according to  claim 29 , wherein: 
         said data load operation is a plural - operand data load operation; and    
       
         each operand address of said first operation code is configured to cause plural operand data to be loaded in parallel from the memory. 
       
     
     
       36. The data processor according to  claim 29 , wherein: 
       
         data values included in the plural operand data loaded from the memory are stored in different respective registers in the plurality of registers. 
       
     
     
       37. The data processor according to  claim 30 , wherein: 
         said data load operation is a plural - operand data load operation; and    
       
         each operand address of said first operation code is configured to cause plural operand data to be loaded in parallel from the memory. 
       
     
     
       38. The data processor according to  claim 31 , wherein: 
       
         said first decoder sequentially decodes operation codes including said first operation code and specifying operations to be executed; and  
       
       
         said second decoder, operative in parallel with said first decoder, sequentially decodes operation codes including said second operation code and specifying operations to be executed. 
       
     
     
       39. The data processor according to  claim 31 , wherein: 
         said data load operation is a plural - operand data load operation; and    
       
         each operand address of said first operation code is configured to cause plural operand data to be loaded in parallel from the memory. 
       
     
     
       40. The data processor according to  claim 31 , wherein: 
       
         data values included in the plural operand data loaded from the memory are stored in different respective registers in the register file. 
       
     
     
       41. The data processor according to  claim 32 , wherein: 
         said data load operation is a plural - operand data load operation; and    
       
         each operand address of said first operation code is configured to cause plural operand data to be loaded in parallel from the memory. 
       
     
     
       42. The data processor according to  claim 32 , wherein: 
       
         data values included in the plural operand data loaded from the memory are stored in different respective registers in the register file. 
       
     
     
       43. A data processor for loading values A 1  to Am and values D 1  to Dm, and for performing a calculation:          ∑     t   =   1     m                     Ai   ·   Di                     
       
         in accordance with a program having a plurality of operation codes, wherein i and m are positive integers, said data processor comprising:  
       
       
         a first decoder configured to decode a first operation code in the program;  
       
       
         a second decoder configured to decode a second operation code in the program in parallel with the decoding of the first operation code by said first decoder;  
       
       
         a first operation unit configured to output an operand address to a memory in response to a decoded result of the first operation code, the first operation unit configured to load values Ah and Aj in parallel from the memory for at least one said operand address, wherein h and j are different integers among  1  to m; and  
       
         a second operation unit configured to perform a multiply - add operation in response to a decoded result of the second operation code output from said second decoder, the multiply - add operation including a multiply operation of a value Ak by a value Dk, wherein k is an integer among  1  to m other than h and j, and an adding operation of a result of the multiply operation to a value held in a register or in an accumulator.   
     
     
       44. The data processor according to  claim 43 , wherein: 
         said first operation code specifies a plural - operand data load operation; and    
       
         each operand address of said first operation code is configured to cause plural operand data to be loaded in parallel from the memory. 
       
     
     
       45. A data processor for loading values A 1  to Am and values D 1  to Dm, and for performing a calculation:          ∑     i   =   1     m                     Ai   ·   Di                     
       
         in accordance with a program having a plurality of operation codes, wherein i and m are positive integers, said data processor comprising:  
       
       
         a first arithmetic operation circuit configured to multiply a value Aj by a value Dj and to multiply a value Ak by a value Dk, wherein j and k are integers;  
       
       
         a second arithmetic operation circuit configured to add a value Pk=Ak·Dk to a value held in a register or in an accumulator; and  
       
       
         an operand access unit configured to output an operand address to a memory, and to load a value Ah and a value An in parallel in accordance with at least one said operand address, wherein h and n are integers; and  
       
       
         a control unit configured to control said first and second arithmetic operation circuits and said operand access unit in accordance with the program so that the multiplication of Aj·Dj, the addition of the value Pk to the value held in the register or in the accumulator, and the loading of the values Ah and An, are performed in parallel. 
       
     
     
       46. The data processor according to  claim 45 , wherein: 
       
         each operand address is configured to cause plural operand data to be loaded in parallel from a memory. 
       
     
     
       47. A data processor for executing a program, the data processor comprising: 
       
         storage devices configured to store data values;  
       
       
         a first arithmetic operation unit configured to perform a multiplying operation utilizing data values stored in said storage devices;  
       
       
         a second arithmetic operation unit configured to perform an adding operation utilizing data values stored in said storage devices;  
       
       
         an operand access unit configured to output an operand address to a memory and to load plural operand data in parallel for at least one said operand address; and  
       
       
         a control unit configured to control said first and second arithmetic operation units and said operand access unit, depending on said program, so that a result of the multiplying operation, a result of the adding operation unit, and the loaded plural operand data, are stored in parallel in said storage devices. 
       
     
     
       48. The data processor according to  claim 47 , wherein: 
       
         data values included in the plural operand data loaded by the operand access unit are stored in different respective registers in said storage devices.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.