显示器寻址是逐行扫描的,每行是串行的。一行中的像素点是并行的。这样串并结合显示提高性能速度。 区别于内存寻址。
CPU再快,显卡刷新率也是60HZ刷新,一秒钟最多60帧(60张图片),太快的就缓存在显卡显存,等待显卡刷新图片。这样CPU再快也就不会加快图片的显示速度。
晶体震荡器一直在震荡,通电后一直都是基准频率,一直有脉冲,那为什么计算机没有因为脉冲,一直执行代码呢?因为控制指令可以屏蔽脉冲避免代码运行,中断响应来了后才会控制执行,计算机就一秒只需要处理几十条指令(正常满载时一秒500万条指令)
1.先顺序串行从磁盘(一个一个)读到内存。
2.在内存中形成数据结构后才是logn的速度提升了速度性能。
机器按下电源开关后,交给中断响应控制计算机了。
学习任何技术: 环境很重要,物理环境很重要,身处在那样的物理环境,很多知识不言而喻,无需过多解释,直接对这样的环境就认知了,就可以直接理解了,不需要再大费周章的证明。比如中文英语的语言环境,已经产生语言的背景。 语言语格式就是习惯或者固定的这能这样写。任何语言都不可能绝对精确的描述现实的情况。 你只需要将自己设身处地的置于那样的物理环境中来理解学习。
逻辑思维准确性,可以通过图形化来判断是非逻辑运算。因为人类更习惯处理图形,通过图形理解速度更快更准确,可以快十倍。
人更适合处理缓存的东西。不要临时才去运算得出结论,浪费时间。只会事倍功半。
学习知识和社会关系,人的思维就是很容易先入为主。 不要空想和无端猜测。 主要看书上的知识并实践,因为在现实的环境中,很多无法理解的都会不言而喻。
CPU并行度,不可能无限并行,因为并行太多会带来复杂的电路连线,太多反而适得其反。所以CPU是64位线路并行。
空想永远是问题,只有做才是答案。当遇到问题或者学过的知识,潜意识很容易空想是错的(因为老习惯了)。这时候要反潜意识。 要用语言或者图形来知道自己反潜意识。
【潜意识错误的认知】需要通过【意识和文字指导来纠正】。错误的潜意识很顽固。
当遇到问题的时候,人很容易进入曾经的潜意识,空想猜测。 空想一辈子都想不通,就算想通了也是主观意识,还是错的。只有现实和去做才是答案。
I7现在 27100MIPS,每秒271亿条指令。超算神威
每秒12.5亿亿次条指令。 相当于需要470万颗I7CPU,一颗超算要40亿人民币。 对速度的概念一无所知,认知一无所知。太快了。
遇到问题,分析这件事情或者知识无法理解的具体阻碍,处理具体的阻碍。
【微问题处理方式】任何复杂的问题都可以拆分成微问题处理。遇到问题就想象微问题处理方式。
分布式或者集群或者大流量系统网络瓶颈,物理上网络传输是串行化的。但服务器之间的集群或者大流量可以采用服务器专用网卡(串并公用的网卡),由于物理并行线路不可能无限增加,所以采用串并公用,一部分并行(比如物理线路上64位并行),其他采用串行。这样可以极大提升集群间网卡的大流量通信传输数据。
【数据处理一定是串行的】,有顺序的,如果没有顺序,那么数据就乱了,所以依赖的数据必须是串行的。【必须串行】然后由于速度快,感觉上去并行。不要对速度一无所知,是非常快的。 学习任何技术的技能都要分析是【串行执行技术】还是【并行执行技术】。
人对现实看到的图形记忆更加深刻清晰。不要大脑臆想图形(这种做法很蠢)。遇到逻辑问题画图后从现实中再用眼睛真实看到图形记忆是最深刻的。
人做事情的阻碍,大部分来自于对事物的认知,不确定这件事的正确或者最优解。就是模菱两可。分不清。还有就是空想怀疑对还是错。这是潜意识在作怪。要用语言来反潜意识。
要知道自己错误的潜意识,才能去反潜意识。比如重复造轮子的潜意识,总是相信自己是对的。担心别人是错的。 所以要多读书才能获取错误经验,人的大脑物理结构和大脑的基因的固有意识都是一样的。所以要多读书学习到,治疗自己错误的意识和认知。 找到问题去反潜意识。 不要觉得自己与众不同,人的大脑物理工作原理和主观意识都一样。所以要去学习所有的书籍中的经验。
【分流不消耗时间的认知,显存中的(200万个像素映射点变化后)瞬间刷新到显示器】AB两个任务,每个任务执行需要100秒,分流的动作只需要一秒。这样总时间近似100秒。如果不分流就需要200秒。节约了一半的性能。分流前提是AB任务独立,没有依赖。硬件层面也是这样的原理。利用了【分流动作几乎不消耗时间的原理认知】。 分流动作不消耗时间,所以并行显示像素点,效率更高。因为像素点之间没有关联。所以多个像素点(200万个)并行同时显示在屏幕上没有延迟。 原因就是分流不消耗时间,200万像素点在显卡显存芯片一一映射,同时并行刷新,瞬间显示一张图片。 【页面卡顿的原因】是显存中的像素点映射点没有变化,导致没有刷新才看起来卡。
计算机指令执行时间认知。一条指令执行的时间都是平均恒定的。比如加法,乘法。跟运算的数值大小无关。平均恒定。
【并行计算的前提】是数据上下之间没有关系,没有依赖。根据物理计算机位宽64位最多并行64位。
【内存结构】利用内存一次寻址总线时间恒定【电路物理结构是平衡二叉树,消耗的时间是常熟】 32位寻址可以寻到42亿个字节。 正好是2^32次方。二分法寻址。 2^64次方是1.8亿亿次。
【要有层次结构】只能使用树的数据结构,平衡多叉树数据结构(性能一次寻址也是常数),不能使用hash数据结构。虽然哈希数据结构速度很快,是最快的。但是因为hash冲突的问题,结构中会丢失一部分无用的结构(比如十个数组会少第九个),导致结构不完整性。所以只能采用平衡多叉树的结构。
Java的内文件的编译后组织结构就类似数组。这样才会访问性能O(1)。
物理层传输的并行8位并行,这样理解相当于把一个独立的数据分成八份同时传输提高传输性能,如果把八份看成整体,其实也是串行的只是提高性能传输性能而已。但八位传输会有数据同步一致性的问题。如果独立的八份数据分别在八位上传输也可以提高性能。但是就没有了并发了。如果八位共享内存还会有冲突。因为是独立的,因为独立的没有关联就不知道哪个是哪个,哪个的作用。 所以结论还是采用一个独立数据分八位传输。看成整体相当于串行。 因为实验得出的结论显示接口串行化提高频率性能更好,避免八位同步。
CPU多核就是并行的,但每核心是独享的,如果要同时获取主内存(共享时,物理上就会是并发的)所以CPU才会有缓存一致性。
分布式确实会增加网络的开销,这个开销有多有少。计算下来这点开销可以忽略。因为高并发大数据量时这个开销微不足道。 所以一定要计算啊,一定要精确通过计算来明确性能的损耗点。不要主观认为损耗了性能就是不好的,也要明确损耗量。 比如你有一个亿,你损耗了十块钱。这十块钱算个什么事呢? 损耗一定要看程度,计算分析具体程度。 做任何事情都是这样,一定要按百分比来分析增益和减益的程度。 程度的大小才是你做决策的核心。
单条指令的执行效率已经优化了(类似并行优化)每个指令看成一个整体其实是串行执行的。不看成整体相当于是并行的。 不能采用多核并行来优化一个串行的算法,因为这个算法上下有依赖,无法并行执行,还会造成并发问题。所以算法都是单核心的。多核的目的是解决独立不相关算法的问题。
【每次操作消耗的时间】读取字节和处理字节所消耗的指令多少是不一样的。比如读取文档字节但不处理运算性能很快,如果读取字节做了操作可能会慢好几倍。 单核串行单个独立数据。
定时器原理,CPU一秒判断一次定好的时间响闹钟。 因为人们定时都是以秒为基本单位。 系统有对应的秒钟。 因为以分钟来判断会不准。有专门的秒触发器。一秒也就消耗几条指令来判断定时。再加上CPU指令并行优化,基本不会浪费CPU的时间。
或者有单独的定时中断电路,CPU内部中断电路。不会影响CPU的任何性能。所以操作系统的时间片切换也是这样。单独毫秒中断触发电路进行中断。逻辑电路00101010110,进位触发,比如累加到了100000000,最高位开关就打开了就触发了。
互联网如何支持那么大的流量?带宽的?