《CPU通识课》读书笔记

news/2024/12/15 22:45:37/

CPU通识课

CPU时代

CPU = 运算器 + 控制器

CPU的主要任务就是由控制器指挥计算机中的其他部件一起协同工作,并且由运算器执行数值计算。

CPU指挥计算机中的其他部件工作。CPU是程序的调用者和运行者,程序的每一条指令都要经过CPU的解析和执行。外界向计算机输入数据,需要CPU进行接收;程序运行结束后,需要CPU发出指示才能把计算结果输出给外界。

CPU是计算机中最复杂的芯片。CPU采用的是超大规模集成电路,现代的芯片制造技术可以在一根头发丝的宽度上排列1000根电路连线。台式计算机中的一个芯片就能包含50亿个晶体管,而人脑中的神经元的数量也就在800亿个左右。一台计算机中,CPU是复杂度最高、工作最繁忙的部件。

主流CPU中的晶体管数量

专用CPU运行的操作系统也往往是根据需求定制的。例如在汽车上,面向整车状态监测而专门设计一个CPU,只用于监测特定的物理量,软件固化烧写在CPU内部的存储模块中。在可穿戴设备中,针对节省电能的要求设计的结构简单、低主频、低功耗的CPU。在智能门锁中,为了支持按键、刷卡、蓝牙等多种开锁方式而专门设计的低功耗CPU。

按照制造工艺,可以将CPU分成电子管CPU、晶体管CPU、集成电路CPU,以及超大规模集成电路CPU。

● 电子管CPU是第一代,使用时间从1945年到20世纪50年代末。● 晶体管CPU是第二代,主要活跃于20世纪50年代末到20世纪60年代。1954年,美国贝尔实验室研制出世界上第一台全晶体管计算机TRADIC,装有800个晶体管。

● 集成电路CPU是第三代,始祖是1971年发布的Intel 4004,这也是世界上第一款商用计算机微处理器,在一块芯片上集成2250个晶体管。

● 超大规模集成电路CPU是第四代,一般是指所包含的晶体管数量庞大(例如超过100万个)的芯片。

 CPU性能论

控制器(CC)在一个时钟模块的驱动下工作。时钟模块以一定频率向控制器发出信号,这个频率称为计算机的“主频”。每次这个信号到来时,控制器内部的地址计数器会增加1。地址计数器的内容发送给存储器中的数据选择器,数据选择器会把指令队列中对应该地址的单元内容发送给控制器,并保存在控制器内部的一个存储单元中。控制器内部的存储单元称为“寄存器”。由于从存储器中取出的数据代表指令,因此这个单元称为“指令寄存器”。

主频越高,显然计算机在单位时间内能完成的工作就越多。

如果时钟频率过高,会导致一条指令还没执行完,下一条指令又在等待处理,计算机会进入不可控状态。

虽然SPEC CPU有诸多不足,但是它目前仍然是衡量计算机性能的最权威工具。无论是修改编译器,还是为了跑分高而在CPU中加入专门的设计,都有“骗测试集”之嫌,但是想把SPEC CPU分值提高到一流水平仍然是需要硬实力的。

人人可学CPU

CPU的发展主要受三方面动力的驱使:第一是应用需求牵引,科学家需要更快的计算速度,人们需要在CPU上运行更复杂的软件,拉动CPU实现更高性能;第二是生产工艺进步,半导体集成电路技术能够在单位面积上制造更多的计算单元;第三是科学探索的内在动力,科学家、工程师不懈地突破现有水平,追求性能更高、智能程度更高的计算机,最终目标是做出像人一样有智慧的装备。

计算机的语言:指令集

指令集是软件和硬件的接口。从软件人员的视角来看,指令集严格规定了CPU的功能,指令集也反映了软件人员对CPU进行编程的接口,所以有时候指令集也称为“处理器架构”

台式计算机、服务器主要采用x86指令集,手机、平板电脑主要采用ARM指令集

增量演进”的意义是,指令集的发展只能添加新的指令,不允许删除现有的指令,也不允许改变现有指令的功能。这样做的好处是,以前的软件一定能够在新指令集的CPU上运行,新的CPU能够“继承”以前全部的软件成果。坚持这样的路线,新的计算机一定能够对老的计算机实现“向下兼容”(有的书上也叫“向前兼容”)。

繁简之争:精简指令集

在计算机发展过程中,指令集形成了两种风格,即复杂指令集计算机(Complex Instruction Set Computer,CISC)和精简指令集计算机(Reduced Instruction Set Computer,RISC)

2000年Intel发布的CPU的指令数量已经超过1000条。

与RISC相区别的是CISC。RISC计算机指令条数一般不超过100条,每条指令长度相同,二进制编码遵循统一的规格,非常便于实现流水线式计算机和编译器调度。

现在的Intel CPU大多是外表披着CISC外壳、里面都是RISC的结构。

第一次抽象:汇编语言

使用二进制表示的计算机指令,称为机器指令。机器指令是计算机电路可以直接理解和执行的指令。使用机器指令可以编写各种各样的程序,就像用人类语言写文章一样,因此机器指令也称为机器语言。

汇编语言(Assembly Language)使用一种接近自然语言的文本形式来表示二进制的机器指令。在汇编语言中,表示形式是各种方便记忆的符号,即字母和数字。

高级语言的另一个好处是“平台无关”。对于不同的指令集,汇编语言是不相同的。面向一种指令集的程序在移植到另外一种指令集时,汇编代码不能通用,几乎要从头重写。如果使用高级语言,代码对所有指令集是通用的,只需要使用新平台的编译器重新编译一遍,就可以生成面向新指令的机器代码。

做CPU就是做微结构

造芯片和造房子有相似之处。指令集相当于房子的地基,IP核相当于房子的设计图纸,芯片相当于造好的房子。真正的好房子,地基是自己的,图纸是自己设计的,房子是自己造的。买别人的IP核攒芯片,就像是购买别人的图纸、在别人的地基上造房子,造完的房子只有使用权没有所有权

解读功耗

CPU表面的温度有可能上升到100℃。这样的温度很容易烧坏芯片,所以常见的计算机内部都需要一个风扇来给CPU散热。

通用还是专用?

异构计算(Heterogeneous Computing)是指不同类型的计算单元合作完成计算任务。每个计算单元采用不同的架构,分别擅长处理某一种类型的计算任务。整个计算任务分解为小的单位,分别交给适合的计算单元来处理。

另一个本质思想是“把原来软件干的活,交给硬件来做”。在通用处理器上,具体功能由软件来实现。而软件由一段指令序列组成, CPU一条条地执行这些指令,一个较为复杂的功能往往需要多条指令,导致一个软件的执行时间与指令的数量成正比,需要占用大量指令周期才能完成一项计算任务。专用处理器可以把这样的功能通过一组电路来实现,用硬件实现等同于使用软件执行多条指令的功能,而总的执行时间远远少于用软件实现的执行时间。

异构计算的典型例子是图形处理器(Graphics Processing Unit,GPU)。例如,如果要在计算机屏幕上显示一条线段,因为CPU的每一条指令只能显示一个点,所以要执行的指令条数就是线段中包含的点的数量,这样显然是很慢的。为了加快图形的显示速度,可以设计一个专门用于显示图形的处理器(即GPU),CPU和GPU之间定义协作接口,CPU只需要告诉GPU一条线段的两个端点的坐标,然后由GPU转换成线段上每一个点的坐标,再发送给显示器进行显示

这样的GPU可以基于非常简单的结构,但是显示图形的速度可以是通用处理器的上百倍甚至更高。最早的GPU直接以硬件方式显示直线、矩形、圆形这些几何图形,称为“2D硬件加速”功能,后来又支持立体图形的“3D加速”功能,以及播放高清视频等“视频硬解码”功能。甚至像在屏幕上显示鼠标指针这件“小事情”,由于每台计算机上都要执行,现在也是由GPU而不是CPU来做了。在现在的计算机上,如果使用媒体播放软件播放一段高清视频,可以看到CPU的执行负载往往不到5%,就是因为GPU分担了绝大部分和显示相关的计算任务

后门和漏洞

CPU是一种高度复杂的产品,人们在设计CPU时可能有意或无意地引入非正常的功能,导致CPU存在后门(Backdoor)或漏洞(Vulnerability)。后门或漏洞都会破坏CPU的正常功能,违背CPU的安全性要求。很多资料对这两个概念不加区别地使用,实际上这两者有完全不同的含义。后门是指能够绕过正常的安全机制的方法。后门通常是设计者有意安排的,但是没有在CPU的产品资料中作为正常功能进行公布。后门可以认为是一种“有意设下的秘密通道”。漏洞是指在CPU的设计中存在的一种缺陷,可以被攻击者利用来实现非正常的功能。漏洞通常是设计者产生的疏忽,没有在测试阶段被检查出来,直到投放市场后才被外界发现。漏洞可以认为是一种“不小心造成的隐患”。使用有后门和漏洞的CPU会对信息系统的安全构成巨大的威胁。

给操作系统打补丁是解决CPU漏洞的一个常用方法。对于已经销售的CPU,如果发现有严重漏洞,不可能再做硬件修改,又不能一夜之间废弃掉,则可以在操作系统中通过软件的修改来绕开漏洞,防止CPU漏洞对信息系统的安全产生影响

国际著名的安全漏洞库是“通用漏洞披露”(Common Vulnerabilities and Exposures,CVE)。CVE漏洞库由很多信息安全相关机构组成的非营利组织进行联合维护,组织成员来自企业、政府和学术界。只要是已经发现的漏洞,CVE都负责进行标准化的命名、编号,形成一个漏洞库,及时发布险情公告和修补措施。

美国国家漏洞数据库(U.S. National Vulnerability Database ,NVD)。

中国国家信息安全漏洞库(China National Vulnerability Database of Information Security,CNNVD)。

中国国家信息安全漏洞共享平台(China National Vulnerability Database,CNVD)。

此外一些大的安全软件厂商也都会维护自己的安全漏洞库,例如赛门铁克、绿盟科技、360安全应急响应中心等。Intel自己也有专门的安全中心,收录Intel处理器产品的漏洞信息。例如编号为INTEL-SA-00086的漏洞是安全

CPU的天职:数值运算

现代高性能CPU中几十个寄存器也就够用了寄存器(Register)是CPU中用于存储数据的单元。在运算器、控制器中,都需要有记忆功能的单元来保存从存储器中读取的数据,以及保存运算器生成的数据,这样的单元就是寄存器。这一系列单元使用“寄存器”的名称主要是为了和存储器(Memory)相区分。两者都有记忆功能,区别在于存储器是位于CPU外部的独立模块,而寄存器是位于CPU内部的单元。存储器的容量要远远大于寄存器。存储器保存了程序的输入数据和最终结果,而寄存器保存的是计算过程中的中间数据,更具有“瞬时性”

包纳天地的内存

内存访问指令有读(Read)、写(Write)两种,代表两种不同的数据传输方向。读指令是把内存单元的值加载到CPU内部的寄存器中,写指令是把寄存器的值写回到内存单元。寄存器充当了CPU和内存之间的数据交换枢纽

缓存(Cache)是CPU和内存之间的一个数据存储区域,用来提高CPU访问内存的速度。现代计算机中的CPU运行速度远远超过内存访问速度,换句话说,内存访问速度拖慢了CPU的运行速度。例如,一个典型的64位桌面CPU,工作主频是2GHz,再加上多发射技术可以在一个时钟节拍内并行处理多条指令,这样每秒执行的指令数量就达到了100亿条,即每秒可以最多执行1010次64位整数运算。而内存的速度提升相对比较缓慢,现在台式计算机、服务器上使用的最先进的DDR4内存规范,工作在2.4GHz时的理论峰值传输速度为19200MB/s,相当于每秒只能给CPU传送2.4×109个64位整数,比CPU的速度慢了一个数量级。

当内存数据的供应速度跟不上CPU的计算速度时,CPU只能等待内存,从而白白浪费计算时间。缓存是使用比内存速度更快的半导体工艺制造的一块存储区域,CPU访问缓存的速度要远远快于内存。由于制造缓存的成本比内存高,因此缓存不可能做得太大,常见计算机的内存容量在吉字节(GB)级别,而缓存容量一般不超过几十兆字节(MB)。

操作系统引入内存管理机制,由操作系统决定应用程序可以使用哪一部分内存。应用程序只能看到分配给自身的虚拟内存,而计算机上实际安装的内存称为“物理内存”(Physical Memory)。

虚拟内存有两种实现方式。

 分段:每个应用程序使用独立的一段物理内存。操作系统加载应用程序时,从物理内存中寻找一块连续的空闲区域,专门留给一个应用程序使用。

 分页:物理内存分成连续的小块,每一块称为一个“页面”(Page)。应用程序本身使用的内存是连续的地址,称为“虚拟地址”(Virtual Address),由操作系统映射到不连续的物理内存

CPU的“外交”

高效的外设数据传输机制:DMA控制器使外设数据直接传递到内存中,不占用CPU直接存储器访问(Direct Memory Access,DMA)是提高计算机对外设数据的处理速度的一种方法,外设可以直接向内存传送数据,不需要CPU执行I/O指令来进行中转。CPU通过I/O指令与外设进行数据交互的方式称为“直接I/O”(Direct I/O),这一方式在面对大批量数据传输时效率较低。由于每条I/O指令传输的数据有位宽限制(一般是寄存器的最大宽度),因此需要重复执行多条指令才能完成数据传输。例如在一个32位CPU中,传输1MB数据就需要执行2的20次方 ÷ 32 = 32768条指令,占用了太多CPU时间。

DMA机制是在内存与外设之间增加一个硬件模块——DMA控制器。DMA控制器与CPU独立工作。在CPU需要从外设读取大量数据时,CPU只需要告诉DMA控制器要读取的外设地址、数据长度,以及放入内存的起始地址,DMA控制器就可以独立地从外设读取数据、送入内存。在此期间,CPU可以处理其他计算任务。DMA控制器完成数据传输后,向CPU发送中断,通知CPU“数据已传输完毕”,这样CPU就可以直接使用内存中的数据了。DMA机制实现在外设(以硬盘为例)和内存之间传输数据的示意图如图所示。

虚拟化:逻辑还是物理?

虚拟化是云计算的基础。虚拟化技术使“逻辑机器”(虚拟机)和“物理机器”(真实机器)分离,提高了对逻辑机器的动态管理能力。云计算的本质是把大量机器集中到一个数据中心统一管理,目前的云计算中心都是在物理机上创建虚拟机,在虚拟机里运行应用程序、存储用户数据。如果一台物理机发生故障,它上面的虚拟机可以把所有程序和数据通过网络“迁移”到另外一台物理机上运行,从而节省了故障处理时间。云计算把计算能力转变成一种服务,虚拟化则增强了服务的可靠性、灵活性和可扩展性。

从一个到多个:并行

多线程(Multi-threading)是并行编程的一种技术,是指一个应用程序可以创建两个及以上独立的执行线索,这两个执行线索分别执行不同的指令序列。每一个执行线索称为一个线程(Thread)。计算机对多线程有软件、硬件两种实现方式。在软件的实现方式中,操作系统控制CPU实现“分时复用”,CPU的执行时间分成很多小的单位,在不同的时间段中分别执行不同线程的指令序列。由于时间段的单位非常小(一般在100ms以内),线程切换的速度非常快,因此给用户的感觉是所有线程在同时运行。但实际上每个线程使用的资源都只占CPU时间的一部分。在硬件的实现方式中,一个CPU核在硬件上支持多个线程的执行环境。每个线程的执行环境都包括一套寄存器、一套流水线、一套数值计算单元等。CPU可以将多个线程都以硬件的方式执行,只要实际运行的线程数量不超过CPU支持的执行环境数量,就不需要分时复用,这是真正意义上的并行执行。

集大成:从CPU到计算机

计算机中最重要的固件是基本输入输出系统(Basic Input Output System,BIOS),BIOS包含了计算机在开机时需要运行的初始化程序。BIOS存储在主板上的一个“只读存储器”(Read-only Memory,ROM)芯片中,这个芯片的内容是在计算机出厂之前使用专业的生产设备写入的,出厂后就固化住,用户一般不用修改。

化设计为实物

“流片”这个术语就是起源于磁带设备。磁带设备保存的是流式信息(即必须从前到后顺序式地访问,不能像磁盘一样任意访问所有位置),所以把GDS2文件交给厂家的过程叫作tapeout,中文就翻译成“流片”。现在网络发达,已经不再需要使用磁带设备,但是“流片”这个习惯用语还是一直在使用。

CPU的纳米工艺是指栅极沟道的最小宽度纳米技术(Nanotechnology)是利用单个原子、分子来生产制造物质的技术。广义来讲,凡是生产制造工具的可控精度在纳米级别,或者生产材料的测量尺度在纳米级别的,都可以算是纳米技术。“纳米级别”通常是指0.1nm~100nm,是目前微加工技术的极限。

在网络文章中,CPU的纳米工艺经常被描述为“两个晶体管的间距”,或者被描述为“晶体管本身的大小”,严格讲都是不准确的,这是典型的科学传播中产生的讹误。无论是晶体管的间距,还是晶体管本身的大小,都要大于栅极的宽度。栅极的宽度对芯片的功耗和响应速度都有影响。电流通过栅极时会损耗,栅极越窄则芯片的功耗越小。栅极越窄也可以使晶体管的导通时间变短,有利于提升芯片的工作频率。

 硅晶片的由来

地壳里各种元素的含量,硅是非常充足的资源

硅又是一种非常合适的半导体(Semiconductor)材料。半导体的定义是指常温下导电性能介于导体与绝缘体之间的材料。

地壳里各种元素的含量,硅是非常充足的资源

巨头寻踪

Intel的成功之道不仅在于技术,Intel的CPU性能与同时代的竞争者相比并没有明显优势,在CPU史上作为性能标杆的CPU很少出自Intel。Intel成功的真正原因是选择了正确的生态建设模式,在CPU指令集、计算机整机、操作系统这3个层面坚持了向下兼容和标准化

● x86指令集严格遵守“向下兼容”原则,新的CPU只允许增加指令,不允许删除或改变原有指令。

● IBM对PC整机定义了标准规范,任何计算机厂商都可以使用x86制造计算机,这个开放的生态阵营最有生命力,厂商群体越来越庞大,不同品牌的计算机里面使用的都是x86的CPU。

● Windows对应用程序保持向下兼容。Windows向应用程序提供的编程接口称为Win32API,包含了Windows内核中的系统调用规范,多年不变。

“开放”和“兼容”是x86生态的两个法宝,用户选择了x86就能够拥有越来越多的应用程序,而应用程序正是生态中最有价值的资源。30年前的Windows应用程序在现在的x86计算机上仍然能运行。用户依赖于应用程序,间接地依赖于能够长期运行这些应用程序的Windows和x86。

Intel与AMD的竞争贯穿了CPU发展史。Intel是公认的伟大公司,而AMD更像是可敬的斗士。Intel产品发展最快的时候,往往是被AMD逼得最紧迫的时候。虽然AMD难以摆脱“江湖第二”的追随者命运,AMD的市值体量仅有Intel的1/10,但AMD的存在明显促进Intel的更快发展,给一个良好生态创造有益的竞争压力。

ARM一直在向台式计算机和服务器领域进军。台式计算机和服务器厂商迫切希望有在x86之后接盘的新生势力,ARM的服务器CPU性能已经不低于Intel至强系列,ARM在云计算、数据中心的前景广阔。

苹果公司首先是一个计算机公司,从苹果计算机诞生的1976年到现在,苹果计算机使用的都是第三方公司的CPU,经历了“MOS 6502—Motorola 68000—PowerPC—x86”的曲折历程。苹果公司自主研发的A系列CPU最开始只用于智能手机、平板电脑。2010年推出的iPhone 4首次搭载了苹果公司自研的A4处理器

苹果公司在移动处理器方面的实力可以称得上是世界第一位。2020年推出的A14是世界上性能最高的ARM处理器,是业界首款5nm制程芯片,封装 118 亿个晶体管,集成6核CPU、4核GPU、16 核神经网络引擎。A14的性能与Intel、AMD的台式计算机CPU相比也毫不逊色。世界上其他的手机CPU厂商都在追赶苹果A系列的路上,例如高通、三星、华为海思、联发科等。

苹果公司于2020年11月开始销售搭载ARM处理器的台式计算机、笔记本计算机。这标志着苹果计算机在使用x86处理器17年后将再次换“芯”,转入ARM生态

Power处理器是IBM的看家处理器,出身高贵,走“高端+高价”路线,性能、I/O带宽、可靠性、可维护性使Intel望洋兴叹。虽然近年来Power的中低端市场逐渐受到Intel至强的侵蚀,但是像金融核心系统等市场还是被Power雄踞。

解决方案如何为王

手机领域。2019年,苹果一家占据了全球智能手机行业66%的利润和32%的手机销售总收入。三星排在全球智能手机行业利润榜的第二位,占整个手机行业利润的17%。华为手机利润率排在第三位,约占10%。在手机CPU企业方面,紫光展锐是国内第二大芯片设计企业,生产CPU芯片卖给手机企业,而利润率低于3%。

手机CPU的设计难度很低。任何厂商都可以拿到ARM授权的公版设计资料生产芯片,世界上能做ARM芯片的有几百家企业。手机的设计则有较高难度,既要美观漂亮,又要操作系统流畅,还要待机时间长。世界上能做“好手机”的知名厂商不到10家,这其中苹果手机的研发投入最大,在整体质量上能保持先进,解决方案也比Android手机更优秀。所以在手机领域,苹果手机利润率最高,三星、华为做Android手机的利润率就要低一些,做手机CPU的厂商则几乎无利润可言。

生态的优点

开放的Android-ARM体系。ARM向全球半导体企业提供芯片授权,Android操作系统免费开放所有源代码。ARM、Android向生态输出了巨大的价值,任何手机厂商都能够使用Android和ARM制造手机。全球智能手机市场中Android-ARM组合占87%,远远超过封闭单一的苹果手机

Linux在优化方面也明显乏力。Linux社区缺乏像苹果公司这样高度重视优化用户体验的专业团队,Linux的桌面操作系统和应用软件的界面设计相对滞后。Linux已经发展30年,在台式计算机市场占据的市场份额仅为1.29%。Android操作系统是Google公司自己把Linux的图形界面推倒重来、完全重写,才满足了手机、平板电脑的体验需求

生态的方向

商界有一条名言流传已久,套用在CPU上同样适用:一流的企业做标准(对应到CPU是知识产权),二流的企业做品牌(对应到CPU是生态),三流的企业做产品(对应到CPU是芯片制造)。


http://www.ppmy.cn/news/191794.html

相关文章

如何查看电脑CPU温度,笔记本温度显示怎么开启

笔记本温度显示怎么开启?在使用电脑过程中,有时候我们需要监控我们电脑的温度,因为电脑硬件的温度对于电脑性能的影响是比较大的,如果电脑温度过高的话,会让CPU或者显卡出现降频问题,导致卡顿或者死机&…

leetcode51. N 皇后 (java)

leetcode 51 N 皇后 leetcode 51 N 皇后题目描述解题思路 代码演示leetcode52 N 皇后II leetcode 51 N 皇后 原题链接: https://leetcode.cn/problems/n-queens/ 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研…

Ubuntu 系统实时查看CPU温度和GPU温度

Ubuntu 系统实时查看CPU和GPU温度: 方式一:lm-sensors 安装lm-sensors: sudo apt install lm-sensors实时查看CPU和GPU 的温度(每1s刷新一次): watch -n 1 sensors其中,Core 0、4、8… 是…

温度是影响计算机,CPU温度过高会造成什么影响_CPU温度过高影响介绍 - 系统家园...

cpu是电脑里很重要的硬件,很多玩家发现使用电脑时它的温度都会变得很高以至于大家都很担心会损坏电脑,那么温度高到底会有什么影响呢?下面就一起来看看吧。 CPU温度过高会造成什么影响: CPU温度过高的影响如下: 1、有自…

台式计算机cpu允许温度,笔记本电脑与台式机cpu温度多少正常?

笔记本电脑与台式机cpu温度多少正常? 发布时间:2011-08-04 17:25:02 作者:佚名 我要评论 大夏天可能您正在high游戏或者电影,突然电脑死机了,然后大多数人直接会想到可能是系统中毒的问题,接着就重装系…

笔记本跑python 90多度会坏吗_cpu温度多高才安全?90度会烧坏吗??

展开全部 cpu温度在85度以下都是安全的,90度也不会烧62616964757a686964616fe78988e69d8331333365663566坏。 1、 一般来讲 CPU 温度控制在升温 30 度范围内是比较正常的,什么是升温 30 度呢,其实很简单,比如现在室温是 25 度,那么升温 30 度就是 55 度了,也就是说在室温…

数字图像处理-傅里叶变换系列编程

问题 问题1 通过计算一维傅里叶变换实现图像二维快速傅里叶变换 代码实现 def dft2D(f):h,w f.shapeF np.zeros(f.shape, dtypecomplex)for i in range(h):F[i,:] np.fft.fft(f[i,:])for i in range(w):F[:,i] np.fft.fft(F[:,i])return F 问题2 图像二维快速傅里叶逆…

RISCV的浮点计算单元FPU

1.机器特征寄存器CSR_MISA 通过该寄存器可以查询当前处理器是否支持单精度浮点计算,是否支持双精度浮点计算,只要支持其中之一,就表示当前处理器支持浮点计算。 csrr t0, CSR_MISAandi t0, t0, (COMPAT_HWCAP_ISA_F | COMPAT_HWCA…