Execution unit with data dependent conditional write instructions
원문보기
IPC분류정보
국가/구분
United States(US) Patent
등록
국제특허분류(IPC7판)
G06F-007/38
G06F-009/00
G06F-009/44
출원번호
US-0050721
(2008-03-18)
등록번호
US-8356162
(2013-01-15)
발명자
/ 주소
Muff, Adam James
Tubbs, Matthew Ray
출원인 / 주소
International Business Machines Corporation
인용정보
피인용 횟수 :
15인용 특허 :
9
초록▼
An execution unit supports data dependent conditional write instructions that write data to a target only when a particular condition is met. In one implementation, a data dependent conditional write instruction identifies a condition as well as data to be tested against that condition. The data is
An execution unit supports data dependent conditional write instructions that write data to a target only when a particular condition is met. In one implementation, a data dependent conditional write instruction identifies a condition as well as data to be tested against that condition. The data is tested against that condition, and the result of the test is used to selectively enable or disable a write to a target associated with the data dependent conditional write instruction. Then, a write is attempted while the write to the target is enabled or disabled such that the write will update the contents of the target only when the write is selectively enabled as a result of the test. By doing so, dependencies are typically avoided, as is use of an architected condition register that might otherwise introduce branch prediction mispredict penalties, enabling improved performance with z-buffer test and similar types of algorithms.
대표청구항▼
1. A method of executing an instruction in an execution unit, the method comprising, in response to receiving a data dependent conditional write instruction: testing data associated with the data dependent conditional write instruction against a condition associated with the data dependent condition
1. A method of executing an instruction in an execution unit, the method comprising, in response to receiving a data dependent conditional write instruction: testing data associated with the data dependent conditional write instruction against a condition associated with the data dependent conditional write instruction; andselectively writing to a target associated with the data dependent conditional write instruction based upon the test;wherein testing the data against the condition includes determining that the condition is not met, and wherein selectively writing to the target comprises, in response to determining the condition is not met:in a first stage of a multi-stage execution pipeline in the execution unit that is executing the data dependent conditional write instruction, deasserting a write enable signal based upon the determination that the condition is not met; andin a second, subsequent stage of the multi-stage execution pipeline, writing to the target while the write enable signal is not asserted such that the target is not updated in response to the write;wherein the data dependent conditional write instruction includes an operand that identifies the data against which the condition is tested, wherein testing the data against the condition includes testing the data identified by the operand, wherein the operand is a first operand that identifies a first register, wherein the data dependent conditional write instruction includes a second operand that identifies a second register, and wherein testing the data against the condition includes comparing data stored in the first register with data stored in the second register. 2. The method of claim 1, wherein the data dependent conditional write instruction includes an operand that identifies a target register, wherein selectively writing to the target associated with the data dependent conditional write instruction comprises selectively writing to the target register. 3. The method of claim 2, wherein the execution unit includes a register file that includes a plurality of registers and write enable logic coupled to the register file, wherein the target register is selected from among the plurality of registers, and wherein the write enable logic is configured to selectively enable a write to the target register in response to a write enable signal. 4. The method of claim 3, wherein selectively writing to the target comprises: selectively asserting the write enable signal;writing to the target register while the write enable signal is selectively asserted such that the target register is updated only if the write enable is asserted, wherein writing to the target register includes asserting a write signal; andgating the write signal with the write enable signal using an AND gate coupled to receive the write signal and the write enable signal as inputs thereto. 5. The method of claim 3, wherein the execution unit comprises a vector execution unit, wherein the register file comprises a vector register file that includes a plurality of vector registers, wherein each vector register includes a plurality of words, wherein the write enable signal includes a plurality of word write enable signals, each of which corresponding to a word from among the plurality of words, wherein the write enable logic is responsive to the plurality of word write enable signals to selectively enable a write to selected words from the target register, wherein selectively asserting the write enable signal includes asserting only a subset of the plurality of word write enable signals, wherein writing to the target register while the write enable signal is selectively asserted includes updating only those words from among the plurality of words in the target register for which the corresponding word write enable signal is asserted. 6. The method of claim 1, wherein the first and second registers are general purpose registers disposed in an architected register file. 7. The method of claim 1, wherein the condition includes at least one of a less than compare, a greater than compare, a less than or equal to compare, a greater than or equal to compare, an equal to compare, a not equal to, a boundary compare, and a not-a-number compare. 8. The method of claim 1, wherein the condition includes an exception selected from the group consisting of an overflow exception, an underflow exception, an inexact exception, and combinations thereof. 9. The method of claim 1, wherein the execution unit is a floating point unit. 10. The method of claim 9, wherein the processing unit includes a branch unit, condition register and a fixed point unit from which the floating point unit is decoupled, wherein the branch unit includes branch prediction logic, and wherein testing the data associated with the data dependent conditional write instruction against the condition associated with the data dependent conditional write instruction is performed without accessing the condition register. 11. The method of claim 1, further comprising executing a z-buffer test routine for a plurality of pixels in an image, wherein the data dependent conditional write instruction identifies a target register, wherein the first register stores a new depth associated with a new pixel to be written at a first coordinate, wherein executing the z-buffer test routine includes, in response to receiving a load instruction prior to receiving the data dependent conditional write instruction, loading an existing depth for the first coordinate into the second register, wherein testing the data associated with the data dependent conditional write instruction against the condition associated with the data dependent conditional write instruction includes performing a greater than comparison between the first and second registers, and wherein selectively writing to the target associated with the data dependent conditional write instruction based upon the test includes writing data from the first register to the target register only if the new depth stored in the first register is greater than the existing depth stored in the second register. 12. A method of conditionally writing to a target in a processing unit of the type including an execution unit with a register file, the method comprising: testing whether a condition is met;selectively enabling or disabling a write to a target in the register file based upon whether the condition is met; andinitiating a write to the target while the write is selectively enabled or disabled based upon whether the condition is met such that the target is updated in response to initiating the write only if the write is selectively enabled,wherein testing whether the condition is met, selectively enabling or disabling the write to the target and initiating the write to the target are performed in response to receiving a data dependent conditional write instruction, wherein testing whether the condition is met includes testing data associated with the data dependent conditional write instruction against a condition associated with the data dependent conditional write instruction, wherein testing the data against the condition includes determining that the condition is not met, and wherein initiating the write to the target includes, in response to determining the condition is not met:in a first stage of a multi-stage execution pipeline in the execution unit that is executing the data dependent conditional write instruction, deasserting a write enable signal based upon the determination that the condition is not met; andin a second, subsequent stage of the multi-stage execution pipeline, writing to the target while the write enable signal is deasserted such that the target is not updated in response to the write;wherein the data dependent conditional write instruction includes an operand that identifies the data against which the condition is tested, wherein testing the data against the condition includes testing the data identified by the operand, wherein the operand is a first operand that identifies a first register, wherein the data dependent conditional write instruction includes a second operand that identifies a second register, and wherein testing the data against the condition includes comparing data stored in the first register with data stored in the second register. 13. The method of claim 12, wherein the first and second registers are general purpose registers disposed in an architected register file. 14. The method of claim 12, further comprising executing a z-buffer test routine for a plurality of pixels in an image, wherein the data dependent conditional write instruction identifies a target register, wherein the first register stores a new depth associated with a new pixel to be written at a first coordinate, wherein executing the z-buffer test routine includes, in response to receiving a load instruction prior to receiving the data dependent conditional write instruction, loading an existing depth for the first coordinate into the second register, wherein testing the data against the condition includes performing a greater than comparison between the first and second registers, and wherein initiating the write includes writing data from the first register to the target register only if the new depth stored in the first register is greater than the existing depth stored in the second register. 15. A circuit arrangement, comprising: a register file including a plurality of registers; andan execution unit coupled to the register file and configured to, in response to a data dependent conditional write instruction, test data associated with the data dependent conditional write instruction against a condition associated with the data dependent conditional write instruction, and selectively write to a target associated with the data dependent conditional write instruction based upon the test, wherein the execution unit is configured to test the data against the condition by determining that the condition is not met, and selectively write to the target by, in response to determining the condition is not met: in a first stage of a multi-stage execution pipeline in the execution unit that is executing the data dependent conditional write instruction, deasserting a write enable signal based upon the determination that the condition is not met; andin a second, subsequent stage of the multi-stage execution pipeline, writing to the target while the write enable signal is not asserted such that the target is not updated in response to the write;wherein the data dependent conditional write instruction includes an operand that identifies the data against which the condition is tested, wherein testing the data against the condition includes testing the data identified by the operand, wherein the operand is a first operand that identifies a first register, wherein the data dependent conditional write instruction includes a second operand that identifies a second register, and wherein testing the data against the condition includes comparing data stored in the first register with data stored in the second register. 16. The circuit arrangement of claim 15, wherein the execution unit is a vector floating point unit, and wherein the register file comprises a vector register file that includes a plurality of vector registers, wherein the circuit arrangement further comprises a branch unit, a condition register and a fixed point unit from which the vector floating point unit is decoupled, wherein the branch unit includes branch prediction logic, and wherein the execution unit is configured to test the data associated with the data dependent conditional write instruction against the condition associated with the data dependent conditional write instruction without accessing the condition register. 17. The circuit arrangement of claim 15, wherein the execution unit is configured to execute a z-buffer test routine for a plurality of pixels in an image, wherein the data dependent conditional write instruction identifies a target register, wherein the first register stores a new depth associated with a new pixel to be written at a first coordinate, wherein the execution unit is configured to execute the z-buffer test routine by, in response to a load instruction received prior to the data dependent conditional write instruction, loading an existing depth for the first coordinate into the second register, wherein the execution unit is configured to test the data associated with the data dependent conditional write instruction against the condition associated with the data dependent conditional write instruction by performing a greater than comparison between the first and second registers, and wherein the execution unit is configured to selectively write to the target associated with the data dependent conditional write instruction based upon the test by writing data from the first register to the target register only if the new depth stored in the first register is greater than the existing depth stored in the second register. 18. An integrated circuit device including the circuit arrangement of claim 15. 19. A program product comprising a non-transitory computer readable medium and logic definition program code resident on the computer readable medium and defining the circuit arrangement of claim 15. 20. A circuit arrangement, comprising: a register file including a plurality of registers; andan execution unit coupled to the register file and configured to conditionally write to a target in the register file by testing whether a condition is met, selectively enabling or disabling a write to the target in the register file based upon whether the condition is met, and initiating a write to the target while the write is selectively enabled or disabled based upon whether the condition is met such that the target is updated in response to initiating the write only if the write is selective enabled, and wherein the execution unit attempts to write to the target regardless of whether the write is selectively enabled or disabled such that the target is not updated in response to attempting the write while the write is selectively disabled, and wherein the execution unit includes a multi-stage execution pipeline configured to execute a data dependent conditional write instruction, the multi-stage execution pipeline including a first stage configured to deassert a write enable signal based upon a determination that the condition is not met, and a second, subsequent stage configured to write to the target while the write enable signal is not asserted such that the target is not updated in response to the write;wherein the data dependent conditional write instruction includes an operand that identifies the data against which the condition is tested, wherein testing the data against the condition includes testing the data identified by the operand, wherein the operand is a first operand that identifies a first register, wherein the data dependent conditional write instruction includes a second operand that identifies a second register, and wherein testing the data against the condition includes comparing data stored in the first register with data stored in the second register.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (9)
Ryherd Eric L. (Brookline MA) Werner Ross G. (Woodside CA) Torborg ; Jr. John G. (Carlisle MA), Apparatus and method for performing depth buffering in a three dimensional display.
Thomas L. Drabenstott ; Gerald G. Pechanek ; Edwin F. Barry ; Charles W. Kurak, Jr., Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution.
Davis,John D.; Bunce,Paul A.; Plass,Donald W.; Reyer,Kenneth J., Write control circuitry and method for a memory array configured with multiple memory subarrays.
Strauss, Jacob A.; Vincent, Pradeep; Frasca, Michael Robert; Frigo, Matteo; Oikarinen, Matti Juhani, Conditional writes at distributed storage services.
Vincent, Pradeep; Oikarinen, Matti Juhani; Laurence, Douglas Stewart; Frigo, Matteo, Connection balancing using attempt counts at distributed storage systems.
Le, Hung Q.; Moreira, Jose E.; Pattnaik, Pratap C.; Thompto, Brian W.; Tseng, Jessica H., Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.