您的位置:首页 > 理论基础

【计算机-CPU】电子电路->机器语言与指令集架构/CPU软核/CPU硬核->汇编语言与与编译器

2019-06-14 10:49 1401 查看

1. 1 电子

元件是电子中的基本零件;而器件常由几个元件组成,有时也指较大的元件。

元件主要包括电阻、电容、电感;器件种类更多,有双极性晶体三极管、场效应晶体管、可控硅、半导体电阻电容等。

元件对电压、电流无控制和变换作用;而器件对电压、电流有控制、变换作用(放大、开关、整流、检波、振荡和调制等)。

参考:http://m.elecfans.com/article/589969.html 元件和器件的区别

1.2 电路

模拟电路:

处理模拟信号的电路,如一交流电压经运算放大器放大后输出一个较大的交流电压,处理的信号是连续变化的,如交流电流是连续的正弦波。模拟电路有运算放大器,调制和解调电路,震荡电路等。

门电路:实现基本逻辑运算(有与门或门非门与非门或非门、与或非门、异或门等几种)的单元电路。

数字电路:

处理数字信号的电路,电路处理的信号不是0就是1,0代表低电平,1代表高电平,基本组成原件就是门电路。由于它具有逻辑运算和逻辑处理功能,所以又称数字逻辑电路

数字电路根据逻辑功能的不同特点,可以分成两大类:

一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。

组合电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。

时序电路是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。有触发器、计数器、寄存器等。

2.机器语言与译码器

机器语言是用二进制代码表示,计算机能执行,机器指令的集合;

机器语言与译码器

指令(指令寄存器)=操作码(译码器将操作码翻译交给操作控制器)+地址码(送到地址寄存器);

参考:http://m.elecfans.com/article/666558.html 一文读懂处理器,内核,芯片三个概念的区别

参考:http://www.360doc.com/content/15/0929/22/1564981_502326554.shtml  寄存器和内存的关系

参考:https://blog.csdn.net/alianada/article/details/82142379  计算机底层是什么东西?

参考:https://www.eefocus.com/mcu-dsp/402521/r0  同样采用ARM架构,苹果处理器凭啥比别的强?

参考:https://www.geek-share.com/detail/2621862583.html (转)处理器架构、指令集和汇编语言,三者有何关系?

参考:https://www.geek-share.com/detail/2732444572.html  汇编指令与机器码的相互转换

参考:https://www.geek-share.com/detail/2683918858.html 指令到底是什么?机器码又是什么?

3.指令集架构/微架构

3.1 Intel指令集

Intel有x86,SSE,AVX指令集结构,AMD有x86,x86-64,3D-Now!指令集。

x86泛指一系列基于Intel 8086且向后兼容的指令集

1971年,Intel发明了世界上第一个商用微处理器—4004,只有45条指令,每秒执行5万条指令,运行速度只有108KHz,甚至比不上1946年世界第一台计算机ENIAC,但集成度却要高很多,集成晶体管2300只,重量还不到一盅司。

在Pentium 4 CPU中,SSE2指令一共144条,

SSE3又新增加了13条新指令,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算

SSE4又新增加了50条有助于编译、媒体、字符/文本处理和程序指向加速指令。

参考:http://www.360doc.com/content/15/0411/07/21966267_462329844.shtml Intel CPU 发展简史

参考:https://baike.baidu.com/item/指令集/238130 指令集

3.2 ARM指令集

ARM有共三种指令集:ARM指令集,Thumb指令集和Thumb-2指令集。其具体使用了什么指令集,芯片采用ARM V?

参考:https://www.geek-share.com/detail/2621862583.html

操作系统位数/CPU架构位数/指令集位数/向上兼容

操作系统的位数是说其所依赖的指令集的位数。

32位CPU:数据总线(DataBus)有32根,ALU能处理的数据位数。

向下(前)兼容

CPU向前兼容,64位CPU兼容32位指令集,所以64位CPU可以跑32位操作系统。

32位CPU兼容16位指令集,所以32位CPU可以跑16位操作系统。

如何实现向下兼容?

64位cpu是从16位发展过来的,依然是x86结构,原理和基本指令都是一样的。

  1. bits 16                     ; 为16 位代码而编译  
  2. mov eax, 1  ; 机器码是:66 b8 01 00 00 00 

16位编程使用了32位寄存器,编译器会自动加上default operand-size override prefix(默认操作数大小覆盖前缀)。

  1. bits 32                     ; 为32位代码而编译  
  2. mov eax, 1  ; 机器码是: b8 01 00 00 00 

这段代码的汇编语句是完全一样的,只不过是为32位代码而编译,它们的机器码就是不一样的。

[code]操作64位寄存器的低32位,高32位会清0,例如mov eax, 0FFFFFFFCH,则整个寄存器为00000000FFFFFFFCH,高32位会被清0。

参考:https://zhidao.baidu.com/question/329146909.html 寄存器如何向下兼容?

参考:http://book.51cto.com/art/201210/359658.htm 通用寄存器 

参考:https://zhidao.baidu.com/question/2011537345660325628.html CPU位数,操作系统位数

指令集是CPU选择的语言,而微架构是具体的实现。

3.3  微架构

电脑语言的「指令集架构」 vs. 执行语言载具的「处理器核心微架构」

指令集无法决定架构,x86指令集也可以用ARM架构。

20000
指令集版本 微架构 用途
ARM V1 ARM1  
ARM V2ARM2, ARM3  
ARM V3 ARM6, ARM7  
ARM V4 StrongARM, ARM7TDMI, ARM9TDMI  
ARM V5 ARM7EJ, ARM9E, ARM10E, XScale  
ARM V6 ARM11, ARM Cortex-M  
ARM V7 ARM Cortex-A, ARM Cortex-M, ARM Cortex-R  
ARM V8    
ARM V9    

ARM推出的通用的架构,缓存(cache)就是在内核中的,这些内核又名公版架构。

3.4  ARM授权模式

     ARM提供三类CPU授权:

参考:https://blog.csdn.net/weixin_34146805/article/details/85779161 ARM介绍2:授权模式

3.4.1 指令集架构授权

ARM提供指令集以及设计规范。

2016年,三星发布了Exynos8 Octa 8890(Octa代表8核),这是三星第一款拥有自研架构的ARM芯片

自研架构=自研微架构≈cortex-A53,A73(公版微架构)

高通,基于ARM v7深度开发自己的处理器微架构。

苹果,基于ARMv7开发Swift微架构。

3.4.2软核授权

ARM提供CPU设计源代码,不允许更改,且不能剽窃。

多数厂商选择直接购买ARM CPU内核设计方案,然后与其它组件(比如GPU、多媒体处理、调制解调器等等)整合,制造出完整的SoC片上系统。

参考:

https://www.geek-share.com/detail/2714758439.html 指令集架构、arm内核、SoC、处理器、CPU、GPU等的关系

https://blog.csdn.net/zzx1045917067/article/details/78575259 ARM 指令集版本和ARM 版本

3.4.3硬核授权

ARM公司不提供设计源代码,提供类似于二进制代码的网表。

4.汇编语言与编译器

汇编语言:用助记符代替机器指令操作码,用地址符号或标号代替指令或操作数的地址。

汇编语言和机器语言指令集是一一对应的,不同平台之间不可直接移植。

指令集架构(ISA):规定了处理器如何识别这些汇编指令,以及如何与上层交互,区分软件和硬件的界限。芯片的软件部分。指令集中的每一条指令对应着一条汇编指令和固定的实现电路,程序设计最小语言单位。

如add r1, r2, r3,

在XX指令集,1010代表add,所以这条指令的指令码部分就是1010,

但XX指令集,0000代表add,所以同样的二进制串在不同的指令集下有不同的解读。

在不同的汇编语言里它有不同的意思,有可能是代表r1=r2+r3 , 也有可能是代表r3=r2+r1。

参考:https://www.geek-share.com/detail/2621862583.html

参考:https://www.geek-share.com/detail/2711344882.html

参考:https://blog.csdn.net/yangtalent1206/article/details/6247607?utm_source=jiancool

汇编语言和机器语言机器移植性差,因为针对特定指令系统,不同的CPU汇编语言机器语言不能通用。

汇编语言机器语言程序结构性差,不便于模块化设计,也造成可移植性差。

指令集架构是专利,不是版权。

ARM有ARM V1~V8指令集结构,(V8是指指令集版本号,ARM architecture)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: