instruction set design historical format data type endianness characteristics sequential model vs data flow if not for programmability, building a computer using data flow model has higher performance, uses fewer resources, and perhaps lower power. but the data flow machine is job-specific. (graphic card, modem chip, LAN chip, etc.). It is difficult to program to do something else. However, sequential model is "general purpose". historical computer is invented for numerical calculation arithmetic instructions are natural for this task. instruction set is how a user can program the machine. family of computer IBM S360, Gene Amdalh, VM370, virtual machines (OS), R. M. Brooks, a huge software project. single instruction set multiple realisation, range of speed, cost. introduce two new concepts: family of computer with similar instruction set microprogram microprogram is invented by Maurice Wilkes in 1970. it enables control unit to be programmable. hence, a computer can "emulate" other computer efficiently. microprogrammed control unit relies on high speed memory which IBM was inventing at that time. S360 is such a success in "emulation" that customers bought it to run only in emulation in replacement of their old slower machines. in early days, instruction set evolved around machine's architecture. It mostly supports functional units available to users. once the OS arrived, the instruction set includes OS and peripheral support functions. modern instruction set has a rich set of, interrupt, I/O, OS related such as virtual memory, memory protection, user previlige, cache related instructions. instruction set architecture classification by purpose business, requires BCD (binary coded decimal) calculation. scientific, requires floating point number calculation. kind of instructions: arithmetic logical control: jump, call, to do loop etc. data movement: load/store values to/from memory other support format remember that a computer has a fixed length word (finite word length) so that "encoding" instruction always a trade-off between compacness and usability. n-bit word can refer to 2^n location in memory. but when making an instruction, opcode-field will take some bits. An instruction has two components: opcode and argument(s). If opcode is m bits then argument is n-m bits which can not refer to all available memory space, hence many techniques in encoding are used (such as indirection, indexing). to give flexibility to instruction format, variable length instruction can be used. VAX has variable length instructions (in bytes). because the length varied a lot (one byte to 60 bytes!) fetching and decoding becomes difficult to make it fast. recommended reading T. Kidder, Soul of a new machine, about how a high performance computer has been designed, implemented, debugged, how to write microprograms. (a Data General, Eclipse machine, if I recall correctly). R. Brooks, Mythical man-month, software engineering must read, his experience in creating VM360. 17 June 2004 P. Chongstitvatana