您的位置 首页 动态

16位CPU怎么做,DIY大神给你支支招儿

如何制作一个简单的16位CPU,首先我们要明确CPU是做什么的,想必各位都比我清楚,百度的资料也很全……如果想要制作一个CPU,首先得明白下计算机的组成结构(或者计算机的替代品,因为并不是只有

  怎样制造一个简略的16位CPU,首要咱们要清晰CPU是做什么的,想必各位都比我清楚,百度的材料也很全……

  假如想要制造一个CPU,首要得了解下核算机的组成结构(或许核算机的替代品,由于并不是只要核算机有CPU,现在的电子产品都很先进,许多设备例如手机、洗衣机乃至电
视和你家的轿车上面都得装一个CPU),数字电路根底,还最好有点编程的根底(当然,没有也不要紧,这些常识都很简略取得,各种书上面都会说到,而且在接下来的过程中我会说到这些常识)

  咱们要完成的是一个RISC指令集的CPU,而且咱们最终要自己为这个CPU规划指令而且编码。

  首要咱们来听个故事,关于CPU的诞生的故事:

  日本客户期望英特尔协助他们规划和出产八种专用集成电路芯片,用于完成桌面核算器。英特尔的工程师发现这样做有两个很大的问题。榜首,英特尔现已在全力开发
三种内存芯片了,没有人力再规划八种新的芯片。第二,用八种芯片完成核算器,将大大超出预算本钱。英特尔的一个名叫Ted Hoff
的工程师仔细剖析了日本同行的规划,他发现了一个现象。这八块芯片各完成一种特定的功用。当用户运用核算器时,这些功用并不是一起都需求的。比方,假如用户需求核算100个数的和,他会重复地输入一个数,再做一次加法,总共做100次,最终再打印出来。担任输入、加法和打印的电路并不一起作业。
这样,当一块芯片在作业时,其他芯片或许是闲暇的。

  Hoff有了一个主意:为什么不能用一块通用的芯片加上程序来完成几块芯片的功用呢?当需求某种功用时,只需求把完成该功用的一段程序代码(称为子程序)加载到通用芯片上,其功用与专用芯片会彻底相同。

  经过几天的思考后,霍夫画出了核算器的新的体系结构图,其间包括4块芯片:一块通用处理器芯片,完成一切的核算和操控功用;一块可读写内存(RAM)芯片,
用来寄存数据;一块只读内存(ROM)芯片,用来寄存程序;一块输入输出芯片,完成键入数据和操作指令、打印成果等等功用。

  看完这个故过后,能够总结:CPU是一种用来替代专用集成电路的器材(这仅仅我的了解,不同人有不同了解,这个就智者见智了,我在接下来的比如中也会阐明我的主意)。

  然后考虑如下这个比如:

  例1-1:

  mov eax,0

  repeat:inc eax

  jmp repeat

  例1-2:

  int main()

  {

  unsigned int i = 0;

  while(1)

  i++;

  }

  例1-3:

16位CPU怎样做,DIY大神给你支支招儿

  能够看到,以上三个比如都发生了一个从0不断添加的序列,而且前两个比如会一向加到溢出又从0开端(这个取决于核算机的字长也便是多少位的CPU,eax是
32位寄存器所以必定是加到4294967295然后回0,而后边那个c程序则看不同编译器和不同渠道不相同),后边那个比如则看你用的是什么样的加法器和多少个D触发器

  那问题就来了,我假定要一个递减的序列怎样办呢?前两个比如很好解说,我直接改代码不就得了:

  例2-1:

  mov eax,0

  repeat:dec eax

  jmp repeat

  例2-2:

  int main()

  {

  unsigned int i = 0;

  while(1)

  i–;

  }

  你只需求悄悄敲击键盘,修改了代码之后,它就会如你所愿的履行。

  可是后边那个比如怎样办呢?或许你现已想到方法了:如例2-3所示。

  例2-3:

16位CPU怎样做,DIY大神给你支支招儿

  问题就来了,你在键盘上敲两下可不能改动实践电路!上面(例1-3)中是个加法器,可是跑到这儿却变成了减法器(例2-3)!

  这样的话,你就得再做一个电路,一个用来算加法,一个用来算减法,可是两个电路代表你得用更多的电路和芯片,你花的钱就得更多,要是你不能一起运用这两个电路你就花了两份钱却只干了一件事!

  这个问题能被处理吗?答案是能!

  请看例3:

16位CPU怎样做,DIY大神给你支支招儿

  这个比如中运用了一个加法器一个减法器,没比上面的电路省(显着……莫非你想用减法器做加法器的功用?不或许吧!当然,加上一个负数的补码的确便是减去
一个数,可是这儿先不考虑这种问题),多了一组多路器,少了一组D触发器。总的来说,优势仍是显着的(两块电路板和一块电路板的不同)。

  而sel信号便是用来挑选的(0是递加,1是递减)。

  假如咱们把sel信号看做“程序”的话,这个电路就像一个“CPU”能依据“程序”履行不同的“操作”,这样的话,经过“程序”(sel信号),这个电路就能够完成复用。

  依据上面的定论,我以为(仅仅是个人以为啊~):程序便是硬件电路的延伸!

  而CPU的基本思想,我以为便是这样的。

  接下来咱们就剖析CPU的结构和各个部件,然后完成这个CPU。

  什么是单周期CPU,什么是多周期CPU,什么是RISC,什么是CISC

  首要我们得有时钟的概念:这个问题欠好解说
啊。。。。。。能够了解为家里边的机械钟,上上电池之后就会滴答滴答走,而它“滴答滴答”的速度便是频率,滴答一下用的时刻便是周期,而人的作业,下班,
吃饭和学习文娱都是依照时钟的指示来进行的(熬夜的网瘾少年不算),一般来说,时钟信号都是由晶体振荡器发生的,0101替换的信号(低电平和高电平)。

  数字电路都需求一个“时钟”来驱动,就像演奏交响乐的时分需求一个指挥家在前面指挥相同,一切的人都会跟着指挥的拍子来演奏,就像数字电路中一切的部件都会跟着时钟节拍作业相同。

  如下是一个抱负的时钟信号:(留意是抱负的)。

16位CPU怎样做,DIY大神给你支支招儿

  当然,实践的时钟信号或许远没有这么抱负,或许上升沿是斜的,而且占空比也或许不是50%,有颤动,有偏移(相对于两个器材),或许由于导线的寄生电容效应变得走形。

  上面那段假如没听懂也不要紧~~~横竖便是告知你,实践的时钟信号测出来必定没这么规范。

  而 cpu的作业频率,是外频与倍频的积(cpu终究怎样算频率,其实这个我也不太清楚呵呵),由于cpu是经过外部的晶振发生一个时钟信号,然后再经过内部
的电路(锁相环),倍频至需求的频率。当然,有人问,为什么要这么费事呢?直接在电路外边做个时钟晶振能发生那么高的时钟信号就能够了嘛,这个是能够的,
在某些简略的体系上(例如51单片姬)便是这样的,可是核算姬的cpu比较杂乱,由于一些原因所以有必要要做到cpu内。

  下面简略说一下CPU的两种指令集:CISC和RISC

  说下我的观点(个人观点,如有过错还请高手纠正):

  RISC是Reduced Instruction Set Computer,精简指令集核算机,典型比如是MIPS处理器。

  CISC 是Complex Instruction Set
Compute,杂乱指令集核算机,典型比如是x86系列处理器(当然现在的x86指令仍是最初cisc的指令,可是实践处理器的结构都现已变成了
risc结构了,risc的结构完成流水线等特性比较简略,在核算机前的你假如用的是intel某系列的处理器,则它运用的指令集看上去仍是像cisc的
指令,可是实践上你的cpu的结构现已是risc的了)。

  一般CISC的处理器需求用微指令合作运转,而RISC全部是经过硬连线完成的,
也便是说,当cisc的处理器在履行你的程序前,还得先从别的一个rom里边读出一些数据来“辅导”处理器怎样处理你的指令,所以cisc功率比较低,而
risc是彻底经过部件和部件之间的衔接完成某种功用,极大的提高了作业功率,而且为流水线结构的呈现供给了根底。cisc的寄存器数量较少,指令能够实
现一些比较特别的功用,例如8086的一些寄存器:

  ax,bx,cx,dx,si,di等;段寄存器有:cs,ds,es,ss等。相对的指令功用比较特别,例如xlat将bx中的值作为基地址,al中的值作为偏移,在内存中寻址到的数据送到al傍边(以ds为段寄存器)

  而risc的处理器则通用寄存器比较多,而指令的功用能够稍弱小一点,例如:

  以nios嵌入式处理器来阐明,nios处理器有32个通用寄存器(r0~r31),而指令功用相对x86的弱一些,而且x86进行内存拜访是直接运用mov指令,nios处理器读内存用的是load,写内存用的是store,

  二者呼应中止的方法也不相同,举一个典型的比如,x86的处理器将中止向量表放在了内存的最低地址(0-1023,每个中止向量占四个字节),能包容256
个中止(以实形式的8086举例)呼应中止时,将中止号对应的地址上的cs和ip的值装入到cs和ip寄存器而将本来的地址保存,而且保存状况寄存器然后
进入中止处理,而risc则具有一个一起的中止呼应函数,这个函数会依据中止号找到程序向体系注册的函数的地址,而且调用这个函数。一般来说而是用的
cisc指令的长度是不定的,例如x86的xor ax,bx对应机器码是0x31d8、而push ax是0x50、pop
cx是0x59。而risc的指令确是定长的,例如32位。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/114578.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部