把哲学的思想引入到编程,带来无穷无尽的想象和思考。
如Dewey经常的比喻,真理不会停止于化学把水分成了氢原子和氧原子,
物理不局限于发现原子与原子核后就到此结束了,还有着无穷无尽的思考与探索。
我对编程的了解也不在局限于计算机编程语言,还有着广阔的自由想象与实践。
在编程的过程中,最常接触的概念就是数组,查找快,但是增删慢,
链表则增删快,查找慢。站在CPU的角度思考,CPU最消耗时间的就是读写内存,
数组的特点是地址连续,在CPU寻址上,数组的设计刚好满足了CPU多级缓存的需求。
而链表因为地址是不连续的,CPU每次读取内存都要更新缓存,所以查找速度比数组慢。
在增删上,数组要比链表多干一件事,就是拷贝所有数据到新的内存地址上面,
而链表只要扩充或释放一个内存节点,而不是所有节点。
还有中性的数据结构,哈希表,它巧妙的运用了地址和值的关系,称为映射。
一个地址对应一个特殊的值,表面上它提高了增删和查找,可是其内部多了一个步骤,
把每次查找的值转化成地址,实际上它与数组比起来查找慢,和链表比起来增删慢,
慢在这个转化值的步骤,但在其实现的功能上,可以说这样的消耗忽略不计。
架构
9400f的x86-64(8086)架构,A12的ARM(Advanced RISC Machine)架构,至于IBM的POWER架构太遥远。
Intel和AMD,高通是美国公司,ARM是一家英国公司(后被孙正义的软银收购)。
翻开这些历史很有意思,Ted Hoff,Jerry Sanders,Hermann Hauser等等,半导体公司的竞争。
他们创造半导体工具,而我学习这些半导体衍生出来的知识。
ARM指令集为RISC(Reduced Instruction Set Computing RISC)
X86指令集为CISC(Complex instruction set computer)
其中也有和ARM竞争的产品Atom,它是Intel在2008年发布的
一条指令在内存即可以是值也可以是指令,在不同运算下有着不同特征机器码。
8086的机器码分为
1.数据传送指令
2.算数运算指令
3.逻辑运算指令
4.位运算集
5.程序流程控制集
ARM1
1.算术和逻辑指令
2.移位指令
在指令集上,两个架构该有的功能都有
x86在寻址上面,32位(2的32次方)地址线的寻址空间封顶即为4GB,64位(2的64次方)的封顶为1TB
arm32位架构,早期的手机内存都是1G,512M,发展到现在都是4GB,8GB,12GB,
从Armv8-A开始变成64架构,算下来2013年苹果5s已经有7年历史了。
只能说x86和ARM架构,计算力面前一分钱一分货。ARM是为特殊设备设计特殊的CPU。
学习一遍ARM指令集,我可受不了。
ARM
在桌面级处理器我知道看核心时钟频率,和功耗,缓存大小,独显,多线程都是扯皮。
面对一款手机的时候却不知道如何选择什么样的处理器更好,时常想起一核有难,十核围观。
最重要的还是CPU的主频,核心主频上不去,分数都是虚的。
晓龙,联发科,三星,苹果,华为。
Apple A,S,M 系列处理器参数大全 (kylebing.cn)
ARM架构的CPU都带着两个不同的主频的核心,来实现省电节能,在玩游戏的用高频处理器,
看视频的时候用低频处理器。在主频上面,苹果CPU始终在同一时期保持领先状态。
高端产品,高端的价格。发现ARM的CPU也和Intel在挤牙膏,固定每年0.3GHZ的速度提升
过度的追逐电子产品所谓的速度是永远不会停止的,理智消费。