A computer system for executing scalar type instructions having data elements as operands and vector type instructions having data elements and arrays of data elements as operands, scalar type instructions and vector type instructions each having an instruction type designating field and an operand register designating field, the instructions and data elements being stored in a main memory, comprising:
- a plurality of scalar registers identified by addresses stored in the operand register designating field of the instructions, each scalar register having a depth of one data element;
- a plurality of vector registers identified by the same addresses as some of the scalar registers, such addresses being stored in the operand register designating field of the instructions wherein the plurality of vector registers are visible in the scalar register address space, each vector register having a depth of a plurality of data elements;
- processing means for executing the scalar type instructions and the vector type instructions, said processing unit including
- means for decoding the instruction type designating field and the operand register designating field of each instruction to select at least one scalar register as an operand if the instruction is a scalar type instruction and to select at least one vector register if the instruction is a vector type instruction, and
- means for storing intermediate processing results of vector type instructions in selected ones of the plurality of vector registers;
- bus control means coupled to the main memory, the plurality of scalar registers, and the plurality of vector registers for transferring data elements between the plurality of scalar registers and the main memory, and for transferring entire arrays of data elements between the plurality of vector registers and the main memory, wherein data transfers to and from the plurality of scalar registers and to and from the plurality of vector registers are performed concurrently with the processing means executing instructions;
- and
- wherein the instruction type designating field is used to distinguish between arithmetic operations using data elements from the plurality of scalar registers or from the plurality of vector registers.