本帖最后由 山东_朱文鑫 于 2023-6-1 00:01 编辑
大家好,我是大白,请你一定要勇敢地为自己站出来,温柔地推翻这个世界,然后把世界变的更加美好。依旧感谢各位小伙伴的一路支持与陪伴。
本篇依旧借上篇文章国产化之路介绍以及信息汇总一篇通,从中介绍了国产化相关的背景信息,以及个人整合的一下信息材料与各位小伙伴进行分享学习,小伙伴们每天在说的X86、ARM等架构,真正的了解这些架构的原理与底层吗?
上篇文章在CPU处理这一部分引出了各种CPU下的架构或指令集下的主流CPU处理器,从本篇开始我们就开始深入学习CPU下的各类不同架构或指令集的原理底层,本篇就从我们熟知的X86的架构开始讲解。
我们所说的X86,是指基于Intel X86架构处理器的一套指令集,即X86指令集,而CPU的架构是最底层的,是处理器的硬件结构,即CPU按照什么样的硬件结构来设计(架构是一个框架,架构确定,则硬件结构大体就确定了,同一架构的不同型号CPU可能只是某些细节设计不一样)
并且架构CPU的指令集,是由该CPU架构决定的,如X86指令集,是因为该CPU采用了X86结构,所以才叫X86指令集,指令集是指某种架构CPU能实现的所有功能,这些功能对应的代码编号构成指令集。
代码编号应该就是指机器码这种底层代码,某种架构CPU架构确定后,代码编号就确定了,这些编号反映了CPU以什么样的方式去执行某些功能,决定了硬件的执行方式;前面说这些代码编号可能就是机器码,机器码就是二进制数字,二进制数字反映在电路上就是高低电平,从而驱动电路运行;不同代码编号的二进制数字排列就不同,所以驱动电路的高低电平就不同,所以电路执行的方式就不同。
x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构,并且X86架构使用了CISC(复杂指令集计算机)。
早期的CPU全部是CISC架构,它的设计目的是 CISC要用最少的机器语言指令来完成所需的计算任务,虽然CPU作为处理核心,但是单独的CPU是无法完成复杂的计算机动作、应用等任务。
计算的处理模式:
所以CPU是这台计算机的大脑,总线组成CPU和其他设备的高速通道,内存存储介质,保存CPU计算的中间结果,加上其他设备如:显卡/显示器、磁盘控制器/磁盘、usb控制器/鼠标键盘等,组成了一整个计算机体系结构。
CPU和内存是完成计算任务的核心组件,CPU其实也不是单独一块,它包括三个部分,运算单元 ,数据单元和控制单元。
1.运算单元只管算,例如做加法,做位移等等。但是它不知道应该算哪些数据,运算结果应该放在哪里。运算单元计算的数据如果每次都要经过总线,到内存中去现拿,这样就太慢了。
2.所以有了数据单元。数据单元包括CPU内部的缓存和寄存器组,空间很小,但是速度飞快,可以暂时存放数据和运算结果。
3.有了放数据的地方,也有了算的地方,还需要有个指挥到底做什么运算的地方,这就是控制单元。控制单元是一个统一的指挥中心,它可以获得下一条指令,然后执行这条指令,这个指令会指定运算单元取出数据单元的某几个数据,计算出结果,然后放在数据单元的某个地方。
CPU的控制单元中,有一个指令指针寄存器,执行的是下一条指令执行的地址,控制单元会不停的将代码段的指令拿出来,先放进指令寄存器,当前的指令分为俩部分,一部分是做什么操作,是加法还是位移;一部分是操作哪些数据。
CPU和内存传输数据都是依靠总线,总线上主要有俩类数据,一个是地址数据,也就是我想拿内存中哪个位置的数据,这类总线叫做地址总线(Address bus);另一类总线叫数据总线(data bus)。
关于X86的架构,上述也说到是从Inter 8086中央处理器出现,x86架构是重要地可变指令长度的CISC(复杂指令集计算机。字组(word, 4字节)长度的存储器访问允许不对齐存储器地址,字组是以低位字节在前的顺序储存在存储器中。在较新的微架构中,x86处理器会把x86指令转换为更像RISC的微指令再予执行,从而获得可与RISC比拟的超标量性能,而仍然保持向前兼容。x86架构的处理器一共有四种执行模式,分别是真实模式,保护模式,系统管理模式以及虚拟V86模式。
1.数据单元,为了暂存数据,8086处理器内部有8个16位的通用寄存器,也就是刚才说的CPU内部的单元数据,分别是AX,BX,CX,DX,SP,BP,SI,DI,这些寄存器主要用于在计算过程中暂存数据。这些寄存器比较灵活,其中AX,BX,CX,DX可以分为俩个8位的寄存器来使用,分别是AH,AL,BH,BL,CH,CL,DH,DL其中H就是High(高位),L是LOW(低位),这样,比较长的数据也可以暂存。
2.控制单元,IP寄存器就是指令指针寄存器(instruction Pointer register),指向代码段中下一条指令的位置,CPU会根据它来不断的将指令从内存的代码中,加载到CPU的指令队列中,然后交给运算单元去执行。每个进程都分代码段和数据段,为了指向不同进程的地址空间,有四个16位的段寄存器,分别是CS,DS,SS,ES。其中CS是代码段寄存器(Code segment register),通过它可以找到代码在内存中的位置。DS是数据段的寄存器,通过它可以找到数据在内存中的位置。SS是栈寄存器(Stack register)。栈是程序运行中的一个特殊的数据结构,数据的存取只能从一端进行,秉承后进先出原则,push就是入栈,pop就是出栈。
再就是关于CPU的32位与64位,因为64位是对32位处理器的延伸性兼容,我们主要看一下32位
在32位处理器中有32根地址总线,可以访问2^32=4G的内存。通用寄存器有扩展,可以将8个16位的扩展到8个32位的,但是依然可以保留16位的和8位的使用方式,其中指向下一条指令的指令指针寄存器IP,就会扩展成32位的,同样也兼容16位的,而64位则会在应用、内存拓展性等方面更大的拓展了32位下的空间。
本篇主要是详解处理器芯片X86架构下的底层原理,以及各个组成模块下的交互方式,以及32下与64位下的主要结构。
以上就是本次的处理器芯片架构或者指令集之X86架构的帖子,感谢大家的参阅支持,一同学习,向大家提供更加优质的技术信息!
励志分享超清壁纸语句~~:
为者常成,行者常至。——《晏子春秋》
好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!
|