cpu的工作原理是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cpu的工作原理是啥?相关的知识,希望对你有一定的参考价值。
CPU的工作原理浅析一个完整的微型计算机系统包括硬件系统和软件系统两大部分。 计算机硬件是指组成一台计算机的各种物理装置,
它们是由各种实在的器件所组成,是计算机进行工作的物质基础。计算机硬件系统中最重要的组成部分是中央处理器(CPU ) 。
(一)CPU的基本概念和组成
中央处理器简称CPU(Central Processing
Unit),它是计算机系统的核心,主要包括运算器和控制器两个部件。如果把计算机比作一个人,那么CPU就是心脏,其重要作用由此可见一斑。CPU的内部结构可以分为控制单元、逻辑单元和存储单元三大部分,三个部分相互协调,便可以进行分析,判断、运算并控制计算机各部分协调工作。
计算机发生的所有动作都是受CPU控制的。其中运算器主要完成各种算术运算(如加、减、乘、除)和逻辑运算( 如逻辑加、逻辑乘和非运算);
而控制器不具有运算功能,它只是读取各种指令,并对指令进行分析,作出相应的控制。通常,在CPU中还有若干个寄存器,它们可直接参与运算并存放运算的中间结果。
我们常说的CPU都是X86系列及兼容CPU ,所谓X86指令集是美国Intel公司为其第一块16位CP
U(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU— i8088(i8086
简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X8
7指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天的Pentium
Ⅲ系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,Intel公司所生产的所有CPU仍然继续使用X86指令集。
另外除Intel 公司之外,AMD和Cyrix等厂家也相继生产出能使用X86指令集的CPU,由于这些CPU能运行所有的为Inte l
CPU所开发的各种软件,所以电脑业内人士就将这些CPU列为Intel的CPU兼容产品。由于Intel X8
6系列及其兼容CPU都使用X86指令集,就形成了今天庞大的X86系列及兼容CPU阵容。
(二)CPU主要技术参数
CPU品质的高低直接决定了一个计算机系统的档次,而 CPU的主要技术特性可以反映出CPU的大致性能。
1、位、字节和字长
CPU可以同时处理的二进制数据的位数是其最重要的一个品质标志。人们通常所说的16位机、32位机就是指该微机中的C
PU可以同时处理16位、32位的二进制数据。早期有代表性的IBM PC/XT、IBM PC/AT与
286机是16位机,386机和486机是32位机,586机则是64位的高档微机。
CPU按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等。
位:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是 “0”或是“1”在CPU中都是一“位”。
字节和字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU。同理32位的CPU就能在单位时间内处理字长为32位的二进制数据。由于常用的英文字符用8位二进制就可以表示,所以通常就将8位称为一个字节。字节的长度是不固定的,对于不同的CPU、字长的长度也不一样。8位的CPU一次只能处理一个宇节,而32位的CPU一次就能处理4个宇节,同理字长为64位的
C PU一次可以处理8个字节。
希望能帮到你~ 参考技术A CPU从内存中接收数据和指令,并处理这些指令,将处理结果再送回内存中结果可以显示和储存起来CPU内部的工作过程:控制器-运算器-累加器-储存器-寄存器-累加器
哈士奇的工作原理是啥?
【中文标题】哈士奇的工作原理是啥?【英文标题】:How husky works?哈士奇的工作原理是什么? 【发布时间】:2019-12-09 08:49:32 【问题描述】:https://github.com/typicode/husky 能够自动运行 git 挂钩,以便在自己的存储库中的团队之间共享它们。
这怎么可能?由于钩子需要在.git/hooks
中,它没有添加到存储库中。
它是否包装git
命令并拦截命令,并在它们发生时运行钩子?
我想在不需要依赖 npm 或 node 的情况下为 python 和 php 项目重现这种行为。
【问题讨论】:
你看过源代码吗?我不是 javascript 专家,但在我看来,husky 会在您安装钩子时安装它。 我正在尝试。在github.com/typicode/husky/blob/… 似乎在上面的链接中复制了createHook
的钩子。这似乎发生在npm install
时间而不是git clone
。如果我想让它在 python 或 php 项目上运行,我需要在 pip 包或 composer 包中使用类似的东西
【参考方案1】:
从版本 5 开始,husky
准确地说是使用 git 的 core.hooksPath
git config core.hooksPath .husky
。这是在husky install
步骤中完成的。
由于husky install
创建的.husky
文件夹包含pre-commit
脚本,因此它将在提交之前运行。
默认情况下,它会包含npm test
,但您可以根据自己的意愿对其进行编辑。
你可以在任何项目中做类似的事情。只需在其中添加 .githooks
文件夹和挂钩文件(检查 .git/hooks 以获取示例文件)。但是您必须在克隆存储库(或第一次设置挂钩)时运行git config core.hooksPath .githooks
。您可以使用一些初始化脚本来执行此操作。npm
具有 scripts.prepare
,它可以在 npm install
(在本例中为 husky install
)上运行命令。
【讨论】:
【参考方案2】:在安装 husky 依赖项时(通过npm install
、npm add husky
、yarn install
、...)在 .git/hooks 目录中创建/更新 git 挂钩。如果挂钩是通过 git 命令触发的,则会触发来自 husky 的脚本,该脚本将根据您用于安装的包管理器执行命令。如果你使用 npm npx --no-install husky-run $hookName "$gitParams"
会被执行。该命令查看您的配置并执行为钩子定义的命令。
它就像 git hooks 的代理。代理安装一次,每次都由普通的 git 钩子执行。如果它被执行,它会查看配置并执行其中定义的命令。
【讨论】:
感谢您的回答。这很有趣,安装东西会运行任意代码,这是一个潜在的安全风险。我问是因为我试图用纯 git 重现这种行为,但这是不可能的。最后我找不到在克隆时将钩子复制到 .git/hooks 的方法,所以我将它们放在自述文件中并让用户手动安装它。再次感谢 @geckos:是的,存在一定的安全风险。但话又说回来:检查和构建 any 软件存在潜在的安全风险,因为几乎所有构建系统都允许执行任意外部命令(即任意代码执行)。所以无论如何你都不应该构建不受信任的软件。以上是关于cpu的工作原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章