“计算机系统”版本间的差异

来自iCenter Wiki
跳转至: 导航搜索
CPU指令集架构
参考课程
 
(相同用户的108个中间修订版本未显示)
第1行: 第1行:
  
  
=计算机硬件体系结构=
 
  
计算机硬件是信息的存储,传输与处理的基本设备。
+
计算的基础是指令集。通信的基础是协议集。标准是信息技术的基础。
 +
 
 +
=计算机系统=
 +
 
 +
计算系统(computing system)由计算硬件和计算机软件部分组成。计算机是负责信息的存储,传输与处理的基本设备。计算机硬件的核心是处理器,计算机软件主要有操作系统、数据库等。
 +
 
 +
个人电脑(Personal Computer,简称PC)是个人使用的计算机系统。Xerox Alto是第一台个人电脑,由Xerox公司的Charles P. Thacker于1973年研发。
 +
 
 +
=计算机硬件=
  
 
==基本设计原则==
 
==基本设计原则==
  
设计原则:计算机硬件的组织方式,如计算、存储、通信之间的模式,应该和功用相适应。
+
*设计原则:计算机硬件的组织方式,如计算、存储、通信之间的模式,应该和功用相适应。
  
 +
==计算机组成(Components)==
  
==计算机硬件的主要组件(Components)==
+
计算机硬件的主要组件(Components)有中央处理器([[Central_Processing_Unit_CPU|Central Processing Unit]], CPU)、主存储器(Main Memory)、磁盘(Disk)、输入输出外设设备(IO)、传输总线设备(Bus)等等。
  
计算机硬件的主要组件(Components)有中央处理器(Central Processing Unit, CPU)、主存储器(Main Memory)、磁盘(Disk)、输入输出外设设备(IO)、传输总线设备(Bus)等等。
+
==计算机存储(Memory Hierarchy) ==
 
+
==计算机存储等级(Memory Hierarchy) ==
+
  
 
寄存器 Register  
 
寄存器 Register  
第24行: 第30行:
 
固态盘SSD(Solid-state disk)  
 
固态盘SSD(Solid-state disk)  
  
磁盘Disk (magnetic)  
+
磁盘Disk (magnetic)
  
=处理器架构(CPU architecture)=
+
==处理器架构(CPU) ==
  
基本原则:
+
[[Central_Processing_Unit_CPU]]
 
+
(1)向下兼容原则
+
 
+
(2)效率IPC (Instructions per cycle) 和 能耗(Energy-efficient )
+
 
+
==微架构(Micro-architecture)==
+
 
+
微架构使得指令集架构(Instruction Set Architecture, ISA)可以在处理器上被执行。指令集架构可以在不同的微架构上执行。 处理器的结构设计是研究微架构与指令集两者之间协作的技术。
+
 
+
===流水线(Pipeline) ===
+
管线化的结构(Pipelined Architecture)允许多个指令在同一时间执行,不同的指令在微架构不同的位置执行。
+
 
+
管线(Pipeline)分为几个不同的阶段(Stage),这些阶段包含取指令,指令解码,执行指令,以及写回结果。管线是微架构其中一项主要的工作。
+
 
+
===超标量(Super-scalar) ===
+
 
+
超标量(Super-scalar)体系结构的CPU在一个时钟周期可以同时分派(dispatching)多条指令在不同的执行单元中被执行,这就实现了指令级的并行。超标量能够在相同的CPU主频下实现更高的CPU吞吐率(throughput)。处理器的内核中一般有多个执行单元(或称功能单元),如算术逻辑单元、位移单元、乘法器等等。超标量体系结构可以视作多指令多数据(MIMD, Multiple instruction multiple data)。
+
 
+
Super-scalar CPUs add the possibility to issue more then one instruction per cycle. As long as these instructions are independent, each of them is dispatched into one of several parallel pipelines. Therefore, a super-scalar CPU can achieve an IPC (Instructions Per Cycle) higher than 1.
+
 
+
====执行单元(Execution units) ====
+
执行单元(Execution units)也是微架构的基本元件。执行单元包含算术逻辑单元(ALU),浮点运算器(FPU),Load/Store单元(LSU),分支预测(branch prediction),以及SIMD。这些单元在处理器内进行计算。执行单元的数量和时延(latency)(内存存取结果的时间)及吞吐率(throughput)(将结果存到或是读取出内存的速度),影响微架构的效能。
+
 
+
===算术逻辑单元ALU (Arithmetic Logic Unit )===
+
 
+
对两个储存于暂存器的数字进行add,subtract,multiply,divide,将结果放到一个暂存器内。
+
 
+
执行位操作,藉对两组数字(为两串的数字,都由零与一构成,分别储存于两个暂存器内)执行逻辑与和逻辑或,或者对寄存器的每一位执行逻辑非操作;(Bitwise logical operations or Bitwise shift operations)
+
 
+
比较两个寄存器中的数据(例如是大于或者相等);
+
 
+
====SIMD (Single instruction multiple data )====
+
 
+
Each core has a SIMD unit in a CPU
+
 
+
SIMD execution model
+
 
+
(a) Scalar mode: one operation produces one result.
+
 
+
(b) SIMD mode: one operation produces multiple results.
+
 
+
===MM (Memory Model )===
+
 
+
The resolution of a memory address
+
 
+
==英特尔公司Intel处理器微架构 ==
+
 
+
Intel Nehalem
+
 
+
Intel Sandy Bridge
+
 
+
Intel Ivy Bridge
+
 
+
Intel Haswell
+
 
+
Intel Skylake
+
 
+
==超微半导体AMD  ==
+
 
+
Barcelona  微架构
+
 
+
Bulldozer 微架构
+
 
+
Zen 微架构
+
 
+
==处理器的指令集架构 ==
+
 
+
指令集架构(Instruction Set Architecture,ISA),又称指令集或指令集体系,是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部I/O。指令集架构包含一系列的opcode即操作码(机器语言),以及由特定处理器执行的基本命令。
+
 
+
===Intel处理器指令集===
+
 
+
* x86
+
x86是一个指令集架构家族,最早由英特尔在1978年面市的“Intel 8086”CPU上开发出来。
+
 
+
* x86-64
+
x86-64(简称x64)是64位版本的x86指令集,向后兼容于16位及32位的x86架构。x64于1999年由AMD设计,AMD首次公开64位集以扩充给x86,称为“AMD64”。其后也为英特尔所采用,现时英特尔称之为“Intel 64”.
+
 
+
* MMX
+
MMX(Matrix Math eXtensions)是由英特尔开发的一种SIMD多媒体指令集,共有57条指令。它于1996年集成在英特尔奔腾(Pentium)MMX处理器上,以提高其多媒体数据的处理能力。其优点是增加了处理器关于多媒体方面的处理能力,缺点是占用浮点数寄存器进行运算。
+
 
+
* SSE {1, 2, 3, 4.1, 4.2}
+
SSE(Streaming SIMD Extensions) 是继MMX的扩充指令集。SSE加入新的8个128位寄存器(XMM0~XMM7)。
+
 
+
* AVX
+
AVX指令集(Advanced Vector Extensions,即高级向量扩展指令集),是Intel的SSE延伸架构,把寄存器XMM 128bit提升至YMM 256bit,以增加一倍的运算效率。
+
 
+
AVX2指令集将整数操作扩展到了256位,并引入了FMA指令集作为扩充。AVX-512则将指令进一步扩展到了512位。
+
 
+
* FMA
+
FMA指令集(Fused-Multiply-Add)是Intel的AVX扩充指令集,如名称上熔合乘法累积(Fused Multiply Accumulate)的意思一样。
+
 
+
FMA3:是一种三元运算指令集。
+
 
+
FMA4:是一种四元运算指令集。
+
 
+
* Intel-VT
+
英特尔虚拟化技术(IVT,Intel Virtualization Technology)是由英特尔开发的一种虚拟化技术,利用IVT可以对在系统上的客操作系统,通过虚拟机查看器(VMM,Virtual Machine Monitor)来虚拟一套硬件设备,以供客操作系统使用。
+
 
+
IVT不仅需要处理器的支持,也需要芯片组、BIOS的支持,有时也许还需要软件的支持。
+
 
+
VT-d技术,“直接输入/输出虚拟化”(Virtualization for Directed I/O)。
+
 
+
VT-x技术,IA-32的IVT扩展指令集。
+
 
+
===Intel intrinsic instructions ===
+
 
+
是用C语言的风格可以调用的英特尔处理器指令。(C style functions that provide access to many Intel instructions)
+
 
+
[https://software.intel.com/sites/landingpage/IntrinsicsGuide/ Intel intrinsic instructions]
+
 
+
===ARM架构===
+
ARM 高级精简指令集机器(Advanced RISC Machine)
+
 
+
Advanced SIMD (NEON) is a combined 64- and 128-bit SIMD instruction set that provides standardized acceleration for media and signal processing applications.
+
 
+
VFP (Vector Floating Point) technology is an FPU(Floating-Point Unit) coprocessor extension to the ARM architecture
+
 
+
流水线:较早的设计具备三阶段的流水线:提取指令、解码,并运行。较高性能的设计,如ARM9,则有更深阶段的流水线: Cortex-A8有13阶段的流水线。
+
 
+
微架构: ARMv8-A、ARMv8.1-A、ARMv8.2-A
+
 
+
指令集: AArch64/A64、AArch32/A32
+
 
+
Most efficient 64-bit ARMv8-A processor with full ARMv7-A compatibility
+
 
+
ARMv8.3-A architecture is now supported by  the GCC 7 compiler.
+
  
 
=计算机软件=
 
=计算机软件=
  
 +
软件开发编程:[[Programming_Program]]
  
 +
常用软件包括:操作系统、数据库、其他工具软件。
  
==编程过程(Programming) ==
+
==操作系统(OS)==
  
高级编程语言(High level Programming language),如C++, Java, Python 等等,用于创作源代码。
+
管理计算机硬件的软件。
  
源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)(语法检测)→ 汇编程序(assembler)→ 目标代码(object code)
+
操作系统的向下兼容原则,或称为向后兼容(backward compatibility)。
 
+
目标代码(object code) → 链接器(Linker)(链接system library)→ 可执行文件(executables)
+
 
+
机器代码(Machine code)或机器指令 (instructions )
+
 
+
==编程语言(Programming language) ==
+
 
+
===硬件编程语言===
+
 
+
设计处理器等集成电路的硬件描述语言
+
 
+
* HDL (Hardware Description Language)
+
 
+
https://en.wikipedia.org/wiki/Hardware_description_language
+
 
+
* VHDL
+
 
+
https://zh.wikipedia.org/wiki/VHDL
+
 
+
* Verilog
+
 
+
https://zh.wikipedia.org/wiki/Verilog
+
 
+
===软件编程语言===
+
 
+
* C (https://en.wikipedia.org/wiki/C_(programming_language)
+
 
+
* C++ (https://zh.wikipedia.org/wiki/C%2B%2B)
+
 
+
* Python (https://en.wikipedia.org/wiki/Python_(programming_language)
+
 
+
* Java (https://en.wikipedia.org/wiki/Java_(programming_language)
+
 
+
* Java (https://en.wikipedia.org/wiki/Java_(programming_language)
+
 
+
* GO (https://zh.wikipedia.org/wiki/Go)
+
 
+
https://github.com/golang/go
+
 
+
https://godoc.org/
+
 
+
https://golang.org/
+
 
+
You can use go with gore
+
 
+
==编辑器(Editor) ==
+
 
+
IDE 集成开发环境
+
 
+
* 微软 Visual Studio 2012
+
 
+
* Eclipse
+
 
+
开源的图形化集成开发环境
+
 
+
* Vim / vi
+
 
+
文本编辑器 Text Editor
+
 
+
==编译器(Compiler) ==
+
 
+
GCC(GNU Compiler Collection),一套编程语言编译器,以GPL及LGPL许可证所发行的自由软件,也是GNU项目的关键部分,也是GNU工具链的主要组成部分之一。
+
 
+
==链接器(Linker) ==
+
 
+
GNU linker (or GNU ld) is the GNU Project's implementation of the Unix command ld
+
 
+
 
+
=常用软件 =
+
 
+
==操作系统(OS)==
+
管理计算机硬件的软件。
+
  
 
* Linux :
 
* Linux :
第249行: 第59行:
 
苹果公司推出的操作系统,如Leopard。
 
苹果公司推出的操作系统,如Leopard。
  
==数据库(database)==
+
==数据库(DB)==
管理数据的软件。
+
数据是描述客观事物的属性的量化值,数值与数值之间有联系,又称为关系(relations)。
 +
 
 +
* 数据库(database)是管理数据的系统软件。SQL是结构化查询语言的缩写。
 +
 
 +
关系型数据库是目前数据管理中最常用的软件。
  
 
* 关系型数据库
 
* 关系型数据库
 
+
微软SQL server,oracle 数据库,MySQL等等。
MySQL
+
  
 
* NoSQL ->NewSQL
 
* NoSQL ->NewSQL
 +
随着大数据的出现与新应用的需求,出现了一大批弱化关系型数据库的内在限制的新型的数据管理软件。
  
==Git ==
+
这些新型的数据管理系统被称为NoSQL或NewSQL。
协同开发工具。
+
  
 
==其他工具软件==
 
==其他工具软件==
第268行: 第81行:
 
规划开发软件的项目管理,包括软件需求分析、软件设计、软件开发和实现、软件测试等环节。
 
规划开发软件的项目管理,包括软件需求分析、软件设计、软件开发和实现、软件测试等环节。
  
==设计模式 Design Pattern==
+
[[Software_Engineering]]
 +
 
 +
==Web应用开发==
 +
 
 +
JavaScript
 +
 
 +
PHP
 +
 
 +
==移动应用开发==
 +
 
 +
===Android平台开发===
 +
开发环境 Android Studio 23+
  
==成对编程 Pairing Programming==
+
===iOS平台开发===
 +
开发环境Xcode
  
==敏捷编程 Agile Programming==
+
Swift编程语言
  
==协同开发 ==
+
=参考文献=
  
=科技创业=
+
== 编程语言 ==
  
[[大数据智能-高新技术 | 高新技术]]
+
# Google C++ Style [https://google.github.io/styleguide/cppguide.html Google C++ Style]
 +
# PEP 8 - Style Guide for Python Code [https://www.python.org/dev/peps/pep-0008/ PEP_8]
 +
# David Flanagan, JavaScript: The definitive guide: Activate your web pages. " O'Reilly Media, Inc.", 2011.
 +
# Weiss, Mark Allen, Data structures and algorithm analysis in Java, Addison-Wesley Longman Publishing Co., Inc., 1998.
 +
# Bjarne Stroustrup, The C++ programming language. Pearson Education, 2013.
  
[[大数据智能-技术创新 | 技术创新]]
+
== 计算机应用基础 ==
  
[[大数据智能-技术创业 | 技术创业]]
+
# John L. Hennessy, and David A. Patterson. Computer architecture: a quantitative approach. Elsevier, 2011.
 +
# Neil Matthew, and Richard Stones. Beginning linux programming. John Wiley & Sons, 2011.
 +
# Miguel Grinberg, Flask Web Development: Developing Web Applications with Python. O'Reilly Media, Inc., 2014.
  
[[大数据智能-知识成果 | 知识产权]]
+
==软件开发==
  
 +
#Shore, James. The art of agile development. " O'Reilly Media, Inc.", 2007.
  
案例-开发移动应用app
+
=参考课程=
  
案例-开发系统软件
+
#斯坦福大学:[https://web.stanford.edu/class/cs101/ CS101 - Introduction to Computing Principles]
 +
#CS 4 HS Summer Workshop : [http://introcomputing.org/ CS for High School]

2018年8月10日 (五) 04:50的最后版本


计算的基础是指令集。通信的基础是协议集。标准是信息技术的基础。

计算机系统

计算系统(computing system)由计算硬件和计算机软件部分组成。计算机是负责信息的存储,传输与处理的基本设备。计算机硬件的核心是处理器,计算机软件主要有操作系统、数据库等。

个人电脑(Personal Computer,简称PC)是个人使用的计算机系统。Xerox Alto是第一台个人电脑,由Xerox公司的Charles P. Thacker于1973年研发。

计算机硬件

基本设计原则

  • 设计原则:计算机硬件的组织方式,如计算、存储、通信之间的模式,应该和功用相适应。

计算机组成(Components)

计算机硬件的主要组件(Components)有中央处理器(Central Processing Unit, CPU)、主存储器(Main Memory)、磁盘(Disk)、输入输出外设设备(IO)、传输总线设备(Bus)等等。

计算机存储(Memory Hierarchy)

寄存器 Register

缓存Cache

主存RAM(Main memory)

固态盘SSD(Solid-state disk)

磁盘Disk (magnetic)

处理器架构(CPU)

Central_Processing_Unit_CPU

计算机软件

软件开发编程:Programming_Program

常用软件包括:操作系统、数据库、其他工具软件。

操作系统(OS)

管理计算机硬件的软件。

操作系统的向下兼容原则,或称为向后兼容(backward compatibility)。

  • Linux :

发行版 Ubuntu Linux, CentOS Linux,

  • Windows :

微软公司推出的操作系统, 如Windows 10。

  • Mac OS

苹果公司推出的操作系统,如Leopard。

数据库(DB)

数据是描述客观事物的属性的量化值,数值与数值之间有联系,又称为关系(relations)。

  • 数据库(database)是管理数据的系统软件。SQL是结构化查询语言的缩写。

关系型数据库是目前数据管理中最常用的软件。

  • 关系型数据库

微软SQL server,oracle 数据库,MySQL等等。

  • NoSQL ->NewSQL

随着大数据的出现与新应用的需求,出现了一大批弱化关系型数据库的内在限制的新型的数据管理软件。

这些新型的数据管理系统被称为NoSQL或NewSQL。

其他工具软件

办公软件office套件。

软件工程

规划开发软件的项目管理,包括软件需求分析、软件设计、软件开发和实现、软件测试等环节。

Software_Engineering

Web应用开发

JavaScript

PHP

移动应用开发

Android平台开发

开发环境 Android Studio 23+

iOS平台开发

开发环境Xcode

Swift编程语言

参考文献

编程语言

  1. Google C++ Style Google C++ Style
  2. PEP 8 - Style Guide for Python Code PEP_8
  3. David Flanagan, JavaScript: The definitive guide: Activate your web pages. " O'Reilly Media, Inc.", 2011.
  4. Weiss, Mark Allen, Data structures and algorithm analysis in Java, Addison-Wesley Longman Publishing Co., Inc., 1998.
  5. Bjarne Stroustrup, The C++ programming language. Pearson Education, 2013.

计算机应用基础

  1. John L. Hennessy, and David A. Patterson. Computer architecture: a quantitative approach. Elsevier, 2011.
  2. Neil Matthew, and Richard Stones. Beginning linux programming. John Wiley & Sons, 2011.
  3. Miguel Grinberg, Flask Web Development: Developing Web Applications with Python. O'Reilly Media, Inc., 2014.

软件开发

  1. Shore, James. The art of agile development. " O'Reilly Media, Inc.", 2007.

参考课程

  1. 斯坦福大学:CS101 - Introduction to Computing Principles
  2. CS 4 HS Summer Workshop : CS for High School