当前位置: 代码迷 >> 综合 >> NVIDIA CUDA入门(1)CPU结构
  详细解决方案

NVIDIA CUDA入门(1)CPU结构

热度:81   发布时间:2023-11-18 01:49:43.0

基础知识:

1、计算机体系结构基础

2、C语言程序设计

3、计算机算啊基础

4、线性代数

https://developer.nvidia.com/computeworks NAIDIA CUDA Zone

一、CPU体系架构概述

1、什么是CPU?

大多冯诺依曼体系结构,执行指令,处理数据的器件、增加了复杂功能、包含大量晶体管。

指令举例:

算术:add r3,r4 ->r4

访存:load [r4] -> r7

控制: jz cnd(如果是0,跳转)

对于一个编译好的程序,最优化目标:

每个指令需要的几个时钟周期*每个时钟周期所用的时间

两条线:数据线,指令线。

CPU一条指令为一个基本的操作单元,最常用指令MAC,乘加指令,a= b*c+d

流水线、乱序执行

寄存器reg,算术逻辑单元ALU,L1一级缓存,L2二级缓存,RAM,硬盘。

桌面应用

1、少量线程 一段指令代码,无存储空间 轻量级进程

2、大量分支交互操作

3、大量存储器访问

 

 

指令集并行,流水线极大地减少时钟周期    问题:有依赖性关系的指令   现在大概都是十几级

 

旁路可以解决相互依赖的问题,不需要写入memory。

流水线分支预测:猜测下一条指令、基于过去的分支记录

分支预测器增加了面积。

分支断定:用条件语句替换分支

CPI越小小号,ICP越大越好

ADD R0,R1->R2

ADD_V (R0,R1,R2......R7)->

峰值IPC为N

OoO可以使IPC接近理想

延迟是第一个数据来到第一个数据出,吞吐是单位时间内可以同时多少

SRAM 6个晶体管可以搭起来、DRAM断电消失

Caching缓存 数据放在尽可能近的位置

存储器设计:

分区(Banking)避免多端口、一致性、控制器多通道,增加带宽

线程:指令流+私有的寄存器,程序计数器、栈(先进先出)+共享全局变量、堆