计算机基本组成 |
您所在的位置:网站首页 › 计算机模型五大部件 › 计算机基本组成 |
以下内容均来自计算机组成原理(唐朔飞),是哈尔滨工业大学刘宏伟教授讲解, B站视频地址 1.计算器由五大部件组成 1.冯诺依曼计算机硬件框图 实线表示数据通路,虚线表示控制和状态反馈
系统复杂性管理的方法(3Y) -层次化(Hierachy):将被设计的系统划分为多个模块或子模块 -模块化(Modularity):有明确定义(Well-defined)的功能和接口 -规则化(regularity):模块更容易被重用 问题:一个现实中的问题,如何用计算机来解决? 问题:是不是所有问题都可以用计算机的方法来解决? 可计算理论是研究计算可行性和函数算法的理论,又称为算法理论。可计算性通常指一类问题是否可以被 计算机来解决(比如煎鸡蛋是没有办法来计算的,不可计算问题中比较著名的是图灵机停机问题) 假设我们面对的是一个可以有计算机解决的问题,如何用计算机去解决这个问题呢? 计算机的工作步骤 上机前的准备 建立数学模型确定计算方法编制解题程序 程序—运算的全部步骤 指令—每一个步骤编程举例 计算 a x 2 x^2 x2+b x x x+c = (a x x x+b)x+c 取 x x x到运算器中 取 x x x到运算器中 乘以 x x x在运算器中 乘以a在运算器中 乘以a在运算器中 加b在运算器中 存a x 2 x^2 x2到存储器中 乘以 x x x在运算器中 取b到运算器中 加c到运算器中 乘以 x x x在运算器中 5个指令执行结束 加a x 2 x^2 x2到运算器中 加c到运算器中 8个指令执行结束指令格式举例 指令包含操作码和地址码 取数 α \alpha α [ α \alpha α] → \rightarrow →ACC(累加器,默认的,不需要指令中指出) 000001 0000001000(假设指令一共16位,其中6位是操作码部分,指明了要做什么操作,000001表示取数;10位是内存地址部分,0000001000表示把存放在内存单元8位置的数据取出来,放到ACC中) 存数 β \beta β [ACC] → \rightarrow → β \beta β(将数据从ACC中存放到内存单元 β \beta β中,指令的二进制,同样是6位操作码,10位的地址码) 加 γ \gamma γ ,假设另外一个操作数默认保存在了ACC里面,加法结果也默认保存在ACC [ACC]+ γ \gamma γ → \rightarrow →ACC 乘 δ \delta δ [ACC] × \times × δ \delta δ → \rightarrow →ACC(考虑溢出,16位,乘积有可能会超过16位,大于16位的没地方存储) 打印 σ \sigma σ [ σ \sigma σ] → \rightarrow →打印机 停机 计算a x 2 x^2 x2+b x x x+c程序的清单 指令和数据存于主存单元的地址指令注释操作码地址码00000010000001000取数X至ACC10001000000001001乘a得ax,存至ACC中20000110000001010加b得ax+b,存于ACC中30001000000001000乘x得到(ax+b)x,存于ACC中40000110000001011加c得到ax^2+bx+c,存于ACC中50000100000001100将ax^2+bx+c,存于主存单元60001010000001100打印70001100停机8x原始数据x9x原始数据a10x原始数据b11c原始数据c12存放结果此表中的地址位从8开始,都是存放的原始数据,前面的是存放操作指令和原始数据的存储位置(操作码是有固定规范的。) 指令和数据都是保存在存储器中的 存储器结构? (1)存储器的基本组成 如果访问? 每次访问获得的数据位数是多少呢? 存储单元存放一串二进制代码(比如存储单元由6个存储元件,那么存储单元可以存放6位二进制数字) 存储字 存储单元中二进制代码的组合(比如存放的000100,就是存储字) 存储字长 存储单元中二进制代码的位数(比如存放的000100 ,字长是6) 每个存储单元赋予一个地址,一个存储单元中存放一个存储字,然后就可以通过地址对存储单元进行访问。 存储单元是按地址寻访,CPU想取数,需要给出存储单元的地址 MAR(Memory Address Register)是寄存器,名字是存储器地址寄存器(反映存储单元的个数) MDR保存了要送入CPU或者刚从存储体中取出的,存储器数据寄存器(反应存储字长) 设MAR =4位,二进制4位,存储单元个数16个,MDR=8位,表明存储字的字长是8位。 对存储单元的读和写,需要用到MAR和MDR 运算器的基本组成及操作过程指令 加 M 初态 ACC 存放 被加数 【M】 → \rightarrow → X M是加数在内存单元中的地址,把加数从内存单元中取出保存到X寄存器 【ACC】+【X】 → \rightarrow → ACC 加法操作通过ALU执行操作,然后存放的ACC中 2.减法操作被减法保存在ACC中,减数保存在X,有ALU完成减法操作,存放到ACC 指令 减 M 初态 ACC 存放 被减数 【M】 → \rightarrow → X M是减数在内存单元中的地址,把减数从内存单元中取出保存到X寄存器 【ACC】-【X】 → \rightarrow → ACC 加法操作通过ALU执行操作,然后存放的ACC中 3.乘法操作指令 乘 M 初始状态 ACC 被乘数 【M】 → \rightarrow → MQ(将M中存放数据,取出存放到MQ中,存放的是乘数) 【ACC】 → \rightarrow → X (将被乘数从ACC中取出,存放到X寄存器) 0 → \rightarrow →ACC (把ACC清0) 【X】 × \times × 【MQ】 → \rightarrow →ACC\MQ(ACC存放高位,MQ存放低位) 4.除法指令 除 M 被除数隐含的保存在ACC(在除法操作之前,先执行一条指令,将被除数放到ACC中) 初态 ACC 被除数 【M】 → \rightarrow →X 【ACC】 ÷ \div ÷【X】 → \rightarrow →MQ 余数在ACC中 控制器的功能,工作原理解释指令 保证指令的按序执行 完 成 一 条 指 令 { 取 指 令 P C 分 析 指 令 I R 执 行 指 令 C U 完成一条指令\begin{cases} 取指令 & PC \\ 分析指令 & IR \\ 执行指令 & CU \end{cases} 完成一条指令⎩⎪⎨⎪⎧取指令分析指令执行指令PCIRCU PC(Program Counter)存放当前欲执行指令的地址,具有计数功能(PC+1) → \rightarrow →PC,至于加几跟具体的结构有关 IR(Instruction register)指令寄存器的缩写,存放当前欲执行的指令 CU(Control Unit) 控制单元 主机完成一条指令的过程以取数指令为例 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |