请问计算机指令集是放在CPU的什么地方,具体形式是逻辑电路还是ROM中的编码?
最近在看计算机的书籍,突然想到一个问题,CPU中的指令是个怎样的存在形式,是一堆复杂的逻辑电路还是ROM中的编码?请知道的老师给解释下。 指令实际上是一组逻辑变量状态,通过CPU里的逻辑电路来实现数据操作,指令集实际是对CPU逻辑电路有意义的变量状态组集合,不用存储在哪:P 楼主所说的两种形式都有。由硬件组成的规范化的逻辑电路操作,一般都是等长的代码来控制开关,代码中的各个位的电平,决定了对应硬件的开关状态。而这个控制代码的读入,由接口的移位寄存器来完成。通常情况下,代码由两字节实现,前一字节是指令,后一字节是参数。这种指令的存在方式是隐含在电路中的,与具体的硬件结构有关。
另一种就是固化在CPU中的小程序,称为“微程序”,用来将读入的指令字节变换成对应的硬件操作。这种方式是在cpu复杂性增加以后的做法,能够适应不断增长的cpu体积。
对于规模比较小的CPU,多数是硬连接决定的。也就是已经固定的逻辑电路。而规模大的CPU还会有一个微指令的设计,那个是一小块ROM,把一条复杂指令翻译成多条微指令再送去ALU执行 指令集在cpu里,是cpu硬件单元设计时固有的,不是写进去的代码 指令在内存中,双击EXE,之后PE结构会创建文件的内存映射
根据基址,段(节表),虚拟地址来进行映射,完了交给CPU去处理
多核CPU或者多CPU架构的话这种处理比较复杂,依赖于NUMA机制处理
Linux下同理,只不过是ELF。 引导程序的话,大同小异
以MBR程序为例,BIOS先读取硬盘的0柱面0磁道1扇区,完了加载到内存0:7c00
之后jmp到内存地址0:7c00执行引导程序。所以指令也是在内存中。
DOS的话,执行COM之后,程序会装载到 随机段:100内存,之后跳转过去,把代码交给CPU执行。 是一堆复杂的逻辑电路 本帖最后由 JuncoJet 于 2020-1-15 16:10 编辑
指令集的话就是所有支持的指令,CPU相当于解释器,JAVA VM或者VB PCODE,都是这么个东西
Native Code的话是CPU硬解,PCODE是软解,所以JAVA跑的慢,Android没iOS的APP快
使用下面命令可以在flags中看到支持的指令集
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz
stepping : 3
microcode : 26
cpu MHz : 800.000
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid: 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm arat xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid fsgsbase bmi1 avx2 smep bmi2 erms invpcid
bogomips : 6798.32
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
就是有电(1)和无电(0)的存在, 似乎就是硬件组成的, 不用想的太复杂,就是简单的有电和没电,想了解更多推荐两本书,穿越计算机的迷雾、编码的奥秘,推荐去科创论坛计算机板块,那里有很多自制的CPU CPU里面没有指令,CPU里面只有执行指令的电路,比如从程序中执行加法指令是由加法器电路完成。指令集是一系列指令的集合,CPU有某个指令集是指CPU内部有完成这些指令的电路。CPU的指令是以软件形式存在,作为PC机来说,逻辑上指令包含在程序内保存在磁盘上,加载程序的时候读到内存,CPU读内存执行指令。实际情况还要复杂一点,CPU获取指令的过程是磁盘->内存->二级缓存->一级代码缓存->CPU指令译码单元寄存器. 有啥指令,你以为像操作系统的文件一堆一堆的?都是些成熟的逻辑电路。比如读、写,传送,寻址等等,数据么放在寄存器或存储器中,我的理解。
页:
[1]
2