Click here to load reader

Computer Architectures - ... Microarchitecture 1 Microarchitecture Intel Core microarchitecture In computer engineering, microarchitecture (sometimes abbreviated to µarch or uarch),

  • View
    3

  • Download
    0

Embed Size (px)

Text of Computer Architectures - ... Microarchitecture 1 Microarchitecture Intel Core microarchitecture In...

  • PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information. PDF generated at: Sat, 25 Feb 2012 22:35:32 UTC

    Computer Architectures An Overview

  • Contents Articles

    Microarchitecture 1 x86 7 PowerPC 23 IBM POWER 33 MIPS architecture 39 SPARC 57 ARM architecture 65 DEC Alpha 80 AlphaStation 92 AlphaServer 95 Very long instruction word 103 Instruction-level parallelism 107 Explicitly parallel instruction computing 108

    References Article Sources and Contributors 111 Image Sources, Licenses and Contributors 113

    Article Licenses License 114

  • Microarchitecture 1

    Microarchitecture

    Intel Core microarchitecture

    In computer engineering, microarchitecture (sometimes abbreviated to µarch or uarch), also called computer organization, is the way a given instruction set architecture (ISA) is implemented on a processor. A given ISA may be implemented with different microarchitectures.[1] Implementations might vary due to different goals of a given design or due to shifts in technology.[2] Computer architecture is the combination of microarchitecture and instruction set design.

    Relation to instruction set architecture

    The ISA is roughly the same as the programming model of a processor as seen by an assembly language programmer or compiler writer. The ISA includes the execution model, processor registers, address and data formats among other things. The microarchitecture includes the constituent parts of the processor and how these interconnect and interoperate to implement the ISA.

    The microarchitecture of a machine is usually represented as (more or less detailed) diagrams that describe the interconnections of the various microarchitectural elements of the machine, which may be everything from single gates and registers, to complete arithmetic logic units (ALU)s and even larger elements. These diagrams generally separate the datapath (where data is placed) and the control path (which can be said to steer the data).[3]

    Each microarchitectural element is in turn represented by a schematic describing the interconnections of logic gates used to implement it. Each logic gate is in turn represented by a circuit diagram describing the connections of the transistors used to implement it in some particular logic family. Machines with different microarchitectures may have the same instruction set architecture, and thus be capable of executing the same programs. New microarchitectures and/or circuitry solutions, along with advances in semiconductor manufacturing, are what allows newer generations of processors to achieve higher performance while using the same ISA. In principle, a single microarchitecture could execute several different ISAs with only minor changes to the microcode.

    Aspects of microarchitecture

    Intel 80286 microarchitecture

    The pipelined datapath is the most commonly used datapath design in microarchitecture today. This technique is used in most modern microprocessors, microcontrollers, and DSPs. The pipelined architecture allows multiple instructions to overlap in execution, much like an assembly line. The pipeline includes several different stages which are fundamental in microarchitecture designs.[3] Some of these stages include instruction fetch, instruction decode, execute, and write back. Some architectures include other stages such as memory access. The design of pipelines is one of the central microarchitectural tasks.

    http://en.wikipedia.org/w/index.php?title=Core_%28microarchitecture%29 http://en.wikipedia.org/w/index.php?title=File%3AIntel_Core2_arch.svg http://en.wikipedia.org/w/index.php?title=Computer_engineering http://en.wikipedia.org/w/index.php?title=Instruction_set_architecture http://en.wikipedia.org/w/index.php?title=Computer_architecture http://en.wikipedia.org/w/index.php?title=Assembly_language http://en.wikipedia.org/w/index.php?title=Processor_register http://en.wikipedia.org/w/index.php?title=Processor_register http://en.wikipedia.org/w/index.php?title=Arithmetic_logic_unit http://en.wikipedia.org/w/index.php?title=Datapath http://en.wikipedia.org/w/index.php?title=Control_path http://en.wikipedia.org/w/index.php?title=Schematic http://en.wikipedia.org/w/index.php?title=Logic_gate http://en.wikipedia.org/w/index.php?title=Circuit_diagram http://en.wikipedia.org/w/index.php?title=Logic_family http://en.wikipedia.org/w/index.php?title=Microcode%23Writable_control_stores http://en.wikipedia.org/w/index.php?title=Intel_80286 http://en.wikipedia.org/w/index.php?title=File%3AIntel_i80286_arch.svg http://en.wikipedia.org/w/index.php?title=Instruction_pipeline http://en.wikipedia.org/w/index.php?title=Datapath http://en.wikipedia.org/w/index.php?title=Microcontroller http://en.wikipedia.org/w/index.php?title=Digital_signal_processor

  • Microarchitecture 2

    Execution units are also essential to microarchitecture. Execution units include arithmetic logic units (ALU), floating point units (FPU), load/store units, branch prediction, and SIMD. These units perform the operations or calculations of the processor. The choice of the number of execution units, their latency and throughput is a central microarchitectural design task. The size, latency, throughput and connectivity of memories within the system are also microarchitectural decisions. System-level design decisions such as whether or not to include peripherals, such as memory controllers, can be considered part of the microarchitectural design process. This includes decisions on the performance-level and connectivity of these peripherals. Unlike architectural design, where achieving a specific performance level is the main goal, microarchitectural design pays closer attention to other constraints. Since microarchitecture design decisions directly affect what goes into a system, attention must be paid to such issues as: •• Chip area/cost •• Power consumption •• Logic complexity •• Ease of connectivity •• Manufacturability •• Ease of debugging •• Testability

    Microarchitectural concepts

    Instruction cycle In general, all CPUs, single-chip microprocessors or multi-chip implementations run programs by performing the following steps: 1.1. Read an instruction and decode it 2.2. Find any associated data that is needed to process the instruction 3.3. Process the instruction 4.4. Write the results out The instruction cycle is repeated continuously until the power is turned off.

    Increasing execution speed Complicating this simple-looking series of steps is the fact that the memory hierarchy, which includes caching, main memory and non-volatile storage like hard disks (where the program instructions and data reside), has always been slower than the processor itself. Step (2) often introduces a lengthy (in CPU terms) delay while the data arrives over the computer bus. A considerable amount of research has been put into designs that avoid these delays as much as possible. Over the years, a central goal was to execute more instructions in parallel, thus increasing the effective execution speed of a program. These efforts introduced complicated logic and circuit structures. Initially, these techniques could only be implemented on expensive mainframes or supercomputers due to the amount of circuitry needed for these techniques. As semiconductor manufacturing progressed, more and more of these techniques could be implemented on a single semiconductor chip. See Moore's law.

    http://en.wikipedia.org/w/index.php?title=Arithmetic_logic_unit http://en.wikipedia.org/w/index.php?title=Floating_point_unit http://en.wikipedia.org/w/index.php?title=Floating_point_unit http://en.wikipedia.org/w/index.php?title=SIMD http://en.wikipedia.org/w/index.php?title=Peripheral http://en.wikipedia.org/w/index.php?title=Memory_controller http://en.wikipedia.org/w/index.php?title=Cache_%28computing%29 http://en.wikipedia.org/w/index.php?title=Main_memory http://en.wikipedia.org/w/index.php?title=Main_memory http://en.wikipedia.org/w/index.php?title=Hard_disk http://en.wikipedia.org/w/index.php?title=Computer_bus http://en.wikipedia.org/w/index.php?title=Moore%27s_law

  • Microarchitecture 3

    Instruction set choice Instruction sets have shifted over the years, from originally very simple to sometimes very complex (in various respects). In recent years, load-store architectures, VLIW and EPIC types have been in fashion. Architectures that are dealing with data parallelism include SIMD and Vectors. Some labels used to denote classes of CPU architectures are not particularly descriptive, especially so the CISC label; many early designs retroactively denoted "CISC" are in fact significantly simpler than modern RISC processors (in several respects). However, the choice of instruction set architecture may greatly affect the complexity of implementing high performance devices. The prominent strategy, used to develop the first RISC processors, was to simplify instructions to a minimum of individual semantic complexity combined with high encoding regularity and simplicity. Such uniform instructions were easily fetched, decoded and executed in a pipelined fashion and a simple strategy to reduce the number of logic levels in order to reach high operating frequencies; instruction cache-memories compensated for the higher operating frequency and inherently low code density while large register sets were used to factor out as much of the (slow) memory accesses as possible.

    Instruction pipelining One of the first, and most powerful, techniques to improve performance is the use of the instruction pipeline. Early processor designs would carry out all of the steps above for one instruction before moving onto the next. Large portions of the circuitry were left idle at

Search related