cpu的基本结构及其工作原理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cpu的基本结构及其工作原理相关的知识,希望对你有一定的参考价值。
1、CPU的外形及结构CPU是整个计算机系统的核心部件,外部结构如下图所示。CPU看上去非常简单,是一个矩形片状物体。其中间凸起部分是CPU核心,它一般是一片指甲大小的、薄薄的硅晶片,在这块小小的硅片上,密布着数以千万计的晶体管,它们相互配合协调,完成各种复杂的运算和操作。为帮助散热,一般在CPU的核心上都加装一个金属封装壳,金属封装壳周围是CPU基板,它将CPU内部的信号引接到CPU针脚上。基板的背面有许多密密麻麻的镀金针脚,它是CPU与外部电路连接的通道。
2、CPU的组成部分
CPU内部主要由运算器、控制器和寄存器组组成,如下图所示。
运算器用来对数据进行各种算术运算和逻辑运算。控制器是CPU的指挥中心,它能对计算机指令进行分析,产生各种控制型信号。寄存器组用来临时存放参加运算的数据和计算的中间结果。
3、CPU的工作原理
CPU的工作原理就像一个工厂对产品的加工过程:进人工厂的原料(程序指令),经过物资部门(控制器)的调度分配,被送往生产线(运算器),生产出成品(寄存器组)后,再存储在仓库(内存)中,最后等着拿到市场上去卖(交由应用程序使用)。这个过程看起来相当长,实际上只是一瞬间发生的事情。也可以这样理解CPU只执行三种基本的操作,分别是读出数据、处理数据和往内存写数据。
现在,主流CPU还是Intel和AMD两家的天下。无论是高端还是低端,两大品牌都有着全线的产品。具体型号及产品可自行百度,这里不做过多介绍。
4、CPU常用术语
4.1.主频
衡量CPU速度快慢的一个重要指标就是CPU的工作频率,也叫做CPU的主频,主频亦称为内频。主频就是CPU的时钟频率,它控制着CPU工作节拍,主频越高,CPU工作节拍就越快,运算速度也就越高。主频通常用一秒钟内处理器所能发出电子脉冲数来测定,计量单位一般为MHz或GHz。目前P4的主频达3GHz以上,IBM公司已研制出速度高达110GHz。
4.2.外频
CPU跟外部(即系统总线)接触沟通的频率称为外频。外频是由主板提供,CPU以这个频率跟系统其他的配件进行沟通,因此,外频亦称为系统总线频率或前端总线速度(FSB)。早期CPU内部与外部的工作频率都相同,后来主频要比外频快。现在PⅢ的外频为133 MHz,P4的外频可采用高达800MHz的外频。
4.3.倍频
CPU的倍频,即倍频系数。它足指CPU主频和外频之间存在着一个比值关系,这个比值就是倍频系数。所以,主频和外频、倍频三者的关系是:主频=外频×倍频
4.4.超频
外频和倍频都可以根据CPU参数通过主板跳线或程序来设置,从而设定CPU主频。通过适当提高外频或倍频,有些CPU的主频可以超过它的标称工作频率,这就是习惯上称的“超频”。超频可以在一定程度上提高系统的性能,但是超频会导致CPU的功耗增加,使CPU工作温度升高,甚至损坏CPU。
4.5.一级缓存(L1 Cache)
一级缓存也称L1高速缓存,它封装在CPU芯片内部的高速缓存,用于暂时存储CPU运算时的部分指令和数据,存取速度与CPU主频相近。内置的L1高速缓存的容量和结构对CPU的性能影响较大,一级缓存容量越大,则CPU处理速度就会越快,对应的CPU价格也就越高。
4.6.二级缓存(L2 Cache)
二级缓存亦称L2高速缓存,指CPU外部的高速缓存。像一级缓存一样,二级缓存越大,则CPU处理速度就越快,整台计算机性能也就越好。一级缓存和二级缓存都位于CPU和内存之间,用于缓解高速CPU与慢速内存速度匹配问题。
4.7、超线程技术
超线程技术是Intel的创新设计,就是在一个处理器中放人两个逻辑处理单元,让多线程的应用程序能够并行处理多项任务,提高CPU的运行效率。 参考技术A 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器(算术逻辑运算单元,ALU,ArithmeTIc Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器(算术逻辑运算单元,ALU,ArithmeTIc Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
cpu的基本结构
从功能上看,一般CPU的内部结构可分为:控制单元、逻辑运算单元、存储单元(包括内部总线和缓冲器)三大部分。其中控制单元完成数据处理整个过程中的调配工作,逻辑单元则完成各个指令以便得到程序最终想要的结果,存储单元就负责存储原始数据以及运算结果。浑然一体的配合使得CPU拥有了强大的功能,可以完成包括浮点、多媒体等指令在内的众多复杂运算,也为数字时代加入了更多的活力。
逻辑部件
英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。
寄存器
寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一。
控制部件
英文Control unit;控制部件,主要是负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。
其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。
微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。 参考技术B 这回答不了,去找专业的机构吧
Hive的基本架构工作原理及其安装简介
Hive 是基于 Hadoop 来构建一套数据仓库分析系统的工具,它突破了传统数据仓库的概念,提供了丰富的 SQL 查询方法来分析存储在 hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务来运行,通过自己的SQL 去查询分析需要的内容,这套 SQL 简称Hive SQL或HiveQL。
一、理解Hive 架构
Hive 架构可以分为四部分。
图1 Hive整体架构图
用户接口
Hive 对外提供了三种服务模式,即 Hive 命令行模式(CLI),Hive 的 Web 模式(WUI),Hive 的远程服务(Client)。下面介绍这些服务的用法。
1、 Hive 命令行模式
Hive 命令行模式启动有两种方式。执行这条命令的前提是要配置 Hive 的环境变量。
1) 进入 /home/hadoop/app/hive 目录,执行如下命令。
./hive
2) 直接执行命令。
hive - -service cli
Hive 命令行模式用于 Linux 平台命令行查询,查询语句基本跟 MySQL 查询语句类似,运行结果如下所示。
[hadoop@xiyunxinxi hive]$ hive
hive> show tables; OK
a
b
Time taken: 1.088 seconds, Fetched: 3 row(s)
hive> select * from a; OK
Time taken: 0.934 seconds
hive> exit;
[hadoop@sjc hive]$
2、Hive Web 模式
Hive Web 界面的启动命令如下。
hive - -service hwi
通过浏览器访问 Hive,默认端口为 9999。
异常:16/05/31 20:24:52 FATAL hwi.HWIServer: HWI WAR file not found at /home/hadoop/app/hive/home/hadoop/app/hive/lib/hive-hwi-0.12.0.war
解决办法:将hive-default.xml 文件中关于hwi的配置文件拷贝到hive-site.xml文件中 示例:
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-0.12.0-SNAPSHOT.war</value> <description>This sets the path to the HWI war file, relative to ${HIVE_HOME}. </description>
</property>
<property>
<name>hive.hwi.listen.host</name>
<value>0.0.0.0</value>
<description>This is the host address the Hive Web Interface will listen on</description>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
<description>This is the port the Hive Web Interface will listen on</description>
</property>
3、 Hive 的远程服务
远程服务(默认端口号 10000)启动方式命令如下,“nohup…&” 是 linux 命令,表示命令在后台运行。
nohup hive - -service hiveserver2 & //在Hive 0.11.0版本之后,提供了HiveServer2服务
Hive 远程服务通过 JDBC 等访问来连接 Hive ,这是程序员最需要的方式。
hive --service hiveserver2 & //默认端口10000hive --service hiveserver2 --hiveconf hive.server2.thrift.port 10002 & //可以通过命令行直接将端口号改为10002
hive的远程服务端口号也可以在hive-default.xml文件中配置,修改hive.server2.thrift.port对应的值即可。
< property>
< name>hive.server2.thrift.port< /name>
< value>10000< /value>
< description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.< /description>
< /property>
元数据存储
Hive 将元数据存储在 RDBMS 中,一般常用 MySQL 和 Derby。默认情况下,Hive 元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。实际生产环境中不适用, 为了支持多用户会话,则需要一个独立的元数据库,使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持,配置一个独立的元数据库需要增加以下步骤。
1) 安装 mysql 数据库。
准备工作 ,需要根据你的linux 系统版本下载对应的MySQL rpm 包。
rpm -qa | grep mysql//查看当前系统是否已经安装了mysql rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps//如果已经安装则删除,否则滤过此步骤 rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm
2) 启动 mysql 服务。
[root@xiyunxinxi app]# service mysqld startInitializing MySQL database: Installing MySQL system tables... OK Filling help tables... OKTo start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system
3) 设置 mysql 的 root 密码。
MySQL在刚刚被安装的时候,它的 root 用户是没有被设置密码的。首先来设置 MySQL 的 root 密码。
[root@xiyunxinxi app]# mysql -u root -p Enter password: //默认密码为空,输入后回车即可Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. mysql>set password for root@localhost=password('root'); 密码设置为root
4) 为 Hive 建立相应的 Mysql 账户,并赋予足够的权限。
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
备注:查看host 和user 之间的关系——在mysql 库中的user 表
use mysql;//使用数据库select host,user from user;
如果 hive 账户无法登陆。为hive@ywendeng 设置密码。
[root@xiyunxinxi ~]#mysql -u root -p rootmysql>set password for hive@localhost=password('hive');
5) 建立 Hive 专用的元数据库,记得用刚才创建的 “hive” 账号登录,命令如下。
[root@xiyunxinxi ~]#mysql -u hive -p //用hive用户登录,密码hiveEnter password:
mysql> create database hive; //创建数据库的名称为hiveQuery OK, 1 row affected (0.00 sec)
6) 找到Hive安装目录 conf/下的 hive-site.xml文件,修改以下几个属性。
[hadoop@xiyunxinxi conf]$ vi hive-site.xml
< property>
< name>javax.jdo.option.ConnectionDriverName< /name>
< value>com.mysql.jdbc.Driver< /value>
< description>Driver class name for a JDBC metastore< /description>
< /property>< property>
< name>javax.jdo.option.ConnectionURL< /name>
< value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8< /value>
< description>JDBC connect string for a JDBC metastore< /description>< /property>< property>
< name>javax.jdo.option.ConnectionUserName< /name>
< value>hive< /value>
< description>Username to use against metastore database< /description>
< /property>< property>
< name>javax.jdo.option.ConnectionPassword< /name>
< value>hive< /value>
< description>password to use against metastore database< /description>
< /property>
如果conf/目录下没有 hive-site.xml文件,则需要拷贝一个名为hive-site.xml的文件。
[hadoop@xiyunxinxi conf]$ cp hive-default.xml.template hive-site.xml
7)将mysql-connector-Java-5.1.21.jar驱动包,拷贝到 $HIVE_HOME/lib 目录下。可点击下载 mysql驱动包
[hadoop@xiyunxinxi lib]#rz //回车,选择已经下载好的mysql驱动包即可[hadoop@xiyunxinxi lib]$ ls mysql-connector-java-5.1.21.jar
8) 启动 Hive Shell,测试运行。
[hadoop@xiyunxinxi hive]$ hive hive> show databases;
hive切换到mysql元数据库之后,hive启动时如果遇到以下错误:
Exception in thread "main"java.lang.RuntimeException: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
解决方案:
在hive 安装目录下,创建一个临时的IO文件iotmp
[hadoop@xiyunxinxi hive]$ mkdir iotmp
[hadoop@xiyunxinxi hive]$ ls bin
然后将路径配置到hive-site.xml文件的参数中
保存,重启hive即可。
[hadoop@xiyunxinxi hive]$ hive
hive> show databases; OK default Time taken: 3.684 seconds, Fetched: 1 row(s)
hive>
解释器、编译器、优化器。
Driver 调用解释器(Compiler)处理 HiveQL 字串,这些字串可能是一条 DDL、DML或查询语句。编译器将字符串转化为策略(plan)。策略仅由元数据操作 和 HDFS 操作组成,元数据操作只包含 DDL 语句,HDFS 操作只包含 LOAD 语句。对插入和查询而言,策略由 MapReduce 任务中的具有方向的非循环图(directedacyclic graph,DAG)组成,具体流程如下。
1)解析器(parser):将查询字符串转化为解析树表达式。
2)语义分析器(semantic analyzer):将解析树表达式转换为基于块(block-based)的内部查询表达式,将输入表的模式(schema)信息从 metastore 中进行恢复。用这些信息验证列名, 展开 SELECT * 以及类型检查(固定类型转换也包含在此检查中)。
3)逻辑策略生成器(logical plan generator):将内部查询表达式转换为逻辑策略,这些策略由逻辑操作树组成。
4)优化器(optimizer):通过逻辑策略构造多途径并以不同方式重写。优化器的功能如下。
将多 multiple join 合并为一个 multi-way join;
对join、group-by 和自定义的 map-reduce 操作重新进行划分;
消减不必要的列;
在表扫描操作中推行使用断言(predicate);
对于已分区的表,消减不必要的分区;
在抽样(sampling)查询中,消减不必要的桶。
此外,优化器还能增加局部聚合操作用于处理大分组聚合(grouped aggregations)和 增加再分区操作用于处理不对称(skew)的分组聚合。
二、Hive 工作原理
Hive 工作原理如下图所示。
图2 Hive工作原理图
MapReduce 开发人员可以把自己写的 Mapper 和 Reducer 作为插件支持 Hive 做更复杂的数据分析。 它与关系型数据库的 SQL 略有不同,但支持了绝大多数的语句(如 DDL、DML)以及常见的聚合函数、连接查询、条件查询等操作。
Hive 不适合用于联机(online) 事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。Hive 的特点是可 伸缩(在Hadoop 的集群上动态的添加设备),可扩展、容错、输入格式的松散耦合。Hive 的入口是DRIVER ,执行的 SQL 语句首先提交到 DRIVER 驱动,然后调用 COMPILER 解释驱动, 最终解释成 MapReduce 任务执行,最后将结果返回。
三、Hive安装步骤
Hive 安装依赖 Hadoop 的集群,它是运行在 Hadoop 的基础上。 所以在安装 Hive 之前,保证 Hadoop 集群能够成功运行。Hive的安装详细流程如下所示。
1、 下载Hive
2、把Hive安装包apache-hive-1.0.0-bin.tar.gz移动到/home/hadoop/app/目录下并解压,然后将文件名称改为 hive。
[hadoop@ywendeng app]$ tar -zxvf apache-hive-1.0.0-bin.tar.gz
[hadoop@ywendeng app]$ mv apache-hive-1.0.0-bin hive
3、 添加hive环境变量
在/etc/profile文件中增加如下内容:
[root@xiyunxinxi ~]$ vi /etc/profile HIVE_HOME=/home/hadoop/app/hivePATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATHexport HIVE_HOME
保存退出后,通过source命令使配置文件生效
[root@xiyunxinxi ~]$ source /etc/profile
4、 启动 Hive
此时切换用户至 hadoop 用户,在命令行输入“hive”命令进行测试。
[hadoop@ xiyunxinxi ]$ hive
hive>
在启动hive的过程中可能遇到的错误及解决办法:
[错误1] Caused by: java.net.ConnectException: Connection refused
异常原因: hadoop 没有启动
解决办法:在hadoop 安装目录下启动hadoop: 使用命令 sbin/start-all.sh
[错误2] [ERROR] Terminal initialization failed; falling back to unsupportedjava.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
异常解决办法: 将hive下的新版本jline的JAR包拷贝到hadoop下:cp /hive/apache-hive-1.2.1-bin/lib/jline-2.12.jar /cloud/hadoop-2.4.1/share/hadoop/yarn/lib
1) 测试 Hive 是否安装成功。
hive> show tables; OK
Time taken: 0.043 seconds
2) 创建表。
hive> create table test_table (id int ,name string,no int); OK
Time taken: 0.5 seconds
3) 查询表。
hive> select * from test_table; OK
Time taken: 0.953 seconds
如果创建表和查询表操作没有出错,就说明 Hive 安装成功。
----------------------------------------------------------------------------------------
以上是关于cpu的基本结构及其工作原理的主要内容,如果未能解决你的问题,请参考以下文章
计算机基础学习笔记:操作系统篇之硬件结构,CPU的基本工作原理