博主自己这学期开了一门“计算机组成原理”,觉得有时候有一些问题,百度上的太杂了,所以自己来写写自己的经验,如果不太好、有错误或者觉得不严谨请立即联系我,马上进行修改
计算机系统由软件和硬件构成,软件又分为系统软件和应用软件。系统软件用来管理整个计算机系统,比如操作系统、数据库管理系统;应用软件是按任务需要编制的软件,比如游戏、QQ、微信啥的。(有点像官方和非官方)
再强调两个概念计算机体系结构和计算机组成!
我觉着我刚开始学的时候有点懵逼,计算机体系结构是指:能见到的计算机系统的属性、概念性的结构和功能特性。也就是根据属性和功能不同而划分的计算机理论组成部分,及计算机基本工作原理、理论的总称 (有无乘法指令) 也就是有点偏理论的感觉
而计算机组成原理:是实现计算机体系结构所体现的属性(比如具体指令的实现),即系统结构的逻辑实现 (如何实现乘法指令) 这个就是具体的去实现它
“现代计算机之父”冯·诺依曼提出的冯·诺依曼计算机:指令和数据在同等存储地位。提出“存储程序”概念,以运算器为中心,按顺序访问并顺序执行指令。
他这个以运算器为中心限制了计算机的发展(提高集成度、提升计算机性能等等),所以,现代计算机以存储器为中心。
存储器(概述,详细的后面给出,先留个印象):
主要是三大部分存储体、MAR、MDR
存储体M->存储单元->存储元件;存储单元里存放一串二进制代码,即为一个存储字;存储元件呢就是最小的,每个存一位,
MAR:存储器地址寄存器,保存地址,所以可以知道地址长度位数,则反映存储单元个数;如16位地址,则2的16次方 个存储单元(有没有不懂的,就是数学的组合,每个位置0/1两种可能,十六个位置,所以2*2*2*....*2,共16个相乘)
MDR:存储器数据寄存器,暂存要写入或取出数据,所以可以知道数据位数,则反映存储字长,且总线宽度和MDR位数相等,比如数据32位,则存储字长为32位,所以4*8b=4B
工作流程简化版的是:CPU给命令,MAR存地址,译码驱动,去存储体M中找对应的存储单元,然后判断是读取还是写入,读的话就是把存储单元里的东西,给放到MDR中,再通过数据总线传输,而写入就是数据总线把数据送到MDR中,MDR再把数据存到相应的存储单元里
所以MAR和MDR相当于接口寄存器
运算器(概述哦!)
ACC是累加器(对应于accelerate),ALU(算术逻辑单元)是进行逻辑运算的部件,X可以理解为暂时存放运算数据,MQ也是,但是存放的有点不同
先说明一点 A+B=C ,这样的里面A是被加数,B是加数,因为是A被加上了一个数,加的是B。其他运算也是同理的。因为我自己有点懵逼所以说一下~
因为加和减运算三个数的位数是不变的(好像不太对,10-10还等于0呢,但是!这都不是重点),加减运算位数没有太大变化,所以只用到了ACC和X;而乘除,比如100*100是10000,结果位数变化很大,所以用上了MQ;而除法因为是整数除法,所以要存余数和商(所以MQ是乘除用的,M--multiplication乘法,可以这么记)
控制器(主要组成是CU+IR+PC):解释指令,保证指令按序执行
PC(程序计数器program count),存放当前欲执行指令的地址,具有记数功能;IR(指令寄存器instruction register)存放当前欲执行的指令;CU(控制单元)发出各种控制信号,负责指令译码
取指令:PC中存取指令这一指令的地址→将地址传给MAR→到存储体M中找到指定地址的取数指令→MDR存该指令→送给IR存该指令→IR将指令的操作码给CU→IR将指令的地址码传给MAR→存储体中取数据→数据存到MDR中→再把数据送到ACC
好啦,第一次写小文章就写到这里啦,这些都是我自己学,仅是为了与大家交流合作,如果有错误和意见,请不吝赐教。这些都是基本概念,留个印象和认知,针对的是某一些机型。有详细的补充我后面会更新哒。本人计算机科学与技术专业,对其他计算机课目想了解的同学可以看看其他文章,只是和大家分享经验,总结一下自己的心得和认知。文章有些资料参考于其他来源,侵删(如果对你有用的话,可以点个赞或者关注呀!)