Inventors:
William J. Dally - Stanford CA, US
Scott Rixner - Spring TX, US
John D. Owens - Emeryville CA, US
Ujval J. Kapasi - Santa Clara CA, US
Assignee:
The Massachusetts Institute of Technology - Cambridge MA
The Board of Trustees of the Leland Stanford Junior University - Palo Alto CA
International Classification:
G06F 7/38
US Classification:
712222, 712 4, 712 8, 712 22, 718105
Abstract:
A processor implements conditional vector operations in which, for example, an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector. Each output vector can then be processed at full processor efficiency without cycles wasted due to branch latency. Data to be processed are divided into two groups based on whether or not they satisfy a given condition by, e. g. , steering each to one of two index vectors. Once the data have been segregated in this way, subsequent processing can be performed without conditional operations, processor cycles wasted due to branch latency, incorrect speculation or execution of unnecessary instructions due to predication. Other examples of conditional operations include combining one or more input vectors into a single output vector based on a condition vector, conditional vector switching, conditional vector combining, and conditional vector load balancing.