• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 71,  comments - 41,  trackbacks - 0
            ? 2003 by Charles C. Lin. All rights reserved.

            Introduction

            The goal of any computer organization course, in my mind, is to give you the understanding of how a computer works.

            In particular, I want to show you how to build a computer. This isn't a real computer, but it's not exactly fake either. A real computer requires many features to make it run fast, to interact with the keyboard, the mouse, the Internet, and so forth. All of those peripherals are very important when it comes to using a computer, and yet, they are really only secondary when it comes to understanding how a computer fundamentally works.

            The computer we'll build is not one you can buy from a store, or from someplace online. You'll never play a game, or watch a video, or write and compile a program on this computer.

            The purpose is to "build" a very rudimentary computer, and to make you believe that this computer could possibly work. Many details are left out. For example, we don't worry about very low level details. Silicon and semiconductor physics are not the point of this exercise.

            We'll work at a more abstract level, concerning ourselves with registers, wires, combinational and sequential logic devices. While these may not make any sense to you know, they should become clearer later on.

            We're not going to worry about how to make a computer run fast either. So our system doesn't include any caches, or pipelines. Nevertheless, by understanding the computer we build, you should have enough understanding to see how a more efficient computer can be built.

            Our goal is to build a CPU that can run a small subset MIPS32 ISA. Why MIPS32? Of all ISAs, MIPS32 is very simple. Simple doesn't mean bad. In fact, simple, in this case, means it can be efficient. It's also great for instruction purposes because it's easier to understand than IA32 (the instruction set for x86).

            We pick one ISA because this makes life simple. I could talk about half a dozen different ISAs, but that's like discussing half a dozen different programming languages. In the end, you know 6 programming languages badly, instead of one programming language well. By concetrating on one example, you learn how it works, and then you have something to compare it to when you learn other ISAs.

            What is a Computer?

            For us, a computer is going to consist of two devices: a CPU (central processing unit) and memory. These two devices are connected by a bus.

            The CPU consists of several parts.

            • registers

              Registers are very fast memory on the CPU. The CPU we're considering consists of 32 32-bit registers. We'll label them $r0 through $r31.

            • ALU

            What Does a Computer Do?

            A computer's purpose is to run programs. A program is a large number of machine code instructions (written in binary).

            Instructions are part of an ISA (instruction set architecture). An ISA tells you a valid set of instructions. The actual CPU runs those instructions. Think of an ISA as a kind of specification and the actual CPU as the implementation of the specifications.

            The individual steps for running a single instructions is:

            • Fetch an instrution

              We assume all programs are stored in memory. We get an instruction, one at a time, and copy it from memory to the CPU. This instruction is copied to a special register called the instruction register, or IR, for short.

              A typical ISA instruction is add $r2, $r3, $r4 which adds the contents of register 3 to the contents of register 4, and stores the result into register 2 (overwriting the previous contents of register 2).

              Note that this instruction is written in pseudo-English, much like C++ code is written in pseudo-English. The CPU processes a binary translation of this instruction. The actual instruction is really a 32-bit bitstring which stands for the add instruction.

            • Decode an instrution/Operand Fetch

              Once the instruction is in the CPU, the CPU has to figure out what instruction was fetched. Based on the binary pattern of the instruction, the CPU begins to fetch operands.

              Think of an instruction as a function. The operands are the arguments to the function. For the most part, the operands are stored in registers, so the CPU must get the data from the registers so it can be processed.

            • Execute instruction using ALU

              The ALU (arithmetic-logic unit) is a combinational logic device that performs operations based on some control inputs. For example, an ALU can add, subtract, do bitwise operations, and so forth. You tell the ALU what to do by setting the control bits correctly. If you change the control bits, the operation of the ALU also changes.

              The ALU has two 32-bit inputs. The inputs of the ALU can come from anywhere, but in the CPU we're talking about, it comes from two registers from the register file.

              For example, the contents of $r3 and $r4 can be fed in as inputs into the ALU. The ALU also has control inputs to tell it what to do. The CPU can set the control inputs so the ALU performs, say, addition, on its inputs.

              The ALU has a 32-bit output, which is the result of performing the operation on the input.

            • Memory Access (for loads and stores)

              The only instructions that interact with memory are load and store. This occurs at this step. This step is skipped for other instructions. However, load and stores are important enough to mention them at this step. We'll see why it has to be at this step.

            • Write Back to Register File

              The result of the ALU is stored at some register specified by the instruction. For example, in the instruction add $r2, $r3, $r4, the result is stored in the first register, which is $r2

            • Update PC

              The PC (program counter) stores the address of the next instruction to be fetched. Normally this is the address of the old instruction plus 4.

            These steps are repeated over and over until the program concludes.

            Understanding the Pieces

            Initially, our goal is to understand the various parts of the computer. In particular:
            • hidden registers: PC (program counter) and IR (instruction register) plus a few more registers.
            • the register file this device contains the user-visible registers, i.e., registers $r0 through $r31.
            • memory this is where the instructions and data are stored
            • ALU this performs arithmetic or logical operations on data stored in the register.
            • various parts We'll also use wires, other registers, multiplexers, and a few other devices.

            We begin by understanding the following parts:

            • What a wire is
            • What a bus is
            • What a clock is
            • What a register is
            • What a register file is
            • What an ALU is
            We'll talk about how to connect the various parts together and how these parts can execute instructions.

            Review Questions

            • What is a computer?
            • What are registers?
            • What is an ALU?
            • What is memory?
            posted on 2007-01-23 14:28 Charles 閱讀(350) 評論(0)  編輯 收藏 引用 所屬分類: 拿來主義
            <2007年1月>
            31123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            決定開始寫工作日記,記錄一下自己的軌跡...

            常用鏈接

            留言簿(4)

            隨筆分類(70)

            隨筆檔案(71)

            charles推薦訪問

            搜索

            •  

            積分與排名

            • 積分 - 51407
            • 排名 - 449

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲伊人久久成综合人影院 | 久久无码国产| 色婷婷综合久久久久中文字幕 | 久久丫忘忧草产品| 久久精品国产亚洲AV无码娇色| 久久精品国产亚洲AV嫖农村妇女| 久久国产美女免费观看精品| 日韩久久久久久中文人妻 | 久久精品一区二区国产| 日韩精品无码久久一区二区三| 久久精品国产亚洲AV无码麻豆 | 久久久噜噜噜久久| 国产综合久久久久| 久久精品人人做人人爽电影| 久久久艹| 国产成人精品久久亚洲高清不卡| 99久久精品国产一区二区 | 看久久久久久a级毛片| 亚洲性久久久影院| 久久久久人妻一区精品| 久久综合久久综合九色| 77777亚洲午夜久久多喷| 伊人久久大香线蕉亚洲五月天| 久久精品成人免费国产片小草 | 中文字幕亚洲综合久久2| 久久99热只有频精品8| 久久精品无码专区免费青青| 亚洲va中文字幕无码久久不卡| 久久久国产精华液| 亚洲国产精品无码久久SM| 色妞色综合久久夜夜| 亚洲国产日韩欧美综合久久| 青青热久久国产久精品| 欧美日韩精品久久久免费观看| 久久精品国产亚洲精品| 久久久久女教师免费一区| 亚洲午夜久久久| 久久婷婷五月综合97色一本一本| 看久久久久久a级毛片| 久久久国产精品福利免费| 国产巨作麻豆欧美亚洲综合久久|