从嘉の小站

Embedded system, Operating system & AI. Reading, Movie & Life.

GPU 体系结构与 CUDA 编程模式

一、 CUDA 构成

CUDA 构成

CUDA 体系结构

Host: CPU(任务发送、组织、预处理、管道并行)

Device: GPU(并行计算)

1. Memory

CUDA中的可以使用的内存种类及体系结构:

最大功能执行单元硬件体系图
  • 一个 SM 中包含 16384 * 32 bits = 64KB Register Files,其中包含 16K 个 Entry,每个 Entry 4 Byte,用来存放单精度浮点数或者整数,而双精度浮点则需要占用相邻两个 Entry。
  • 程序中定义的局部变量一般都是分配在 Register 中,当 Register[……]

Read more

Design Tradeoffs for SSD Performance

文献:Agrawal N, Prabhakaran V, Wobber T, et al. Design Tradeoffs for SSD Performance.[C], Usenix Technical Conference. 2009. https://www.usenix.org/legacy/event/usenix08/tech/full_papers/agrawal/agrawal.pdf

一、本文工作

  • 对设计选择进行分析、分类和折衷,以达到SSD最佳性能;
  • 使用 trace-driven 手段评估优化结果;
  • Wear-leveling & Cleaning[……]

Read more

Interleaving

Three interleaving strategies:

  • Device bus interleaving
  • Flash Plane Interleaving
  • IO Interleaving (concurrency)

1.Device bus interleaving

  • 优点:硬件结构简单,额外开销小;
  • 缺点:最小可编程单元增大,错误率提高,能耗增大。
  • 面临的挑战:
    • Large page size may necessitate double buffering;
    • 随着错误率的增大,需要交错的Error Detection Code (interleaved[……]

Read more

[译] [NAND Flash] 6. The Write Cliff

原文链接:https://flashdba.com/2014/11/24/understanding-flash-the-write-cliff/

可预测行为

系统行为的可预测性是非常重要的。如果知道一个系统任何时间的行为,我们就可以计划对应的操作。

当flash设备即将占满时,包含有用数据的page将要重定位,以进行block擦除操作。但是这里需要考虑两个问题:

  • 每个flash die 一次只能执行一个操作(有些flash是每个plane上一次只能执行一个操作),这就意味着,如果你正在擦除block A,那么对block Z的读取操作将必须 排队(queue),尽管这是die中与b[……]

Read more

Dirty Page

Dirty Page 产生于数据更改的过程中。当我们对数据进行更改时,更改操作不会立即作用到物理存储空间,而需要经历如下过程:

1.更改缓冲区页面数据,即逻辑写 (Logical write)

2.将逻辑缓冲页中的数据写入到物理 table/disk 中,并记录到 transaction log 中,即物理写 (Physical write).

在缓冲区中被更改的数据叫做 dirty page。在通过物理写 被复制到磁盘上后,dirty page 就会被移除。

Data Modification cycle 如下图所示:

Dirty page可通过三种方式写到磁盘[……]

Read more

[译] [NAND Flash] 5. Garbage Collection

原文链接:https://flashdba.com/2014/10/15/understanding-flash-garbage-collection-matters/

Why We Need Garbage Collection?

首先我们来考虑一下没有垃圾回收机制的flash系统会发生什么。

假设一个由6个blocks组成的非常简单的flash系统,每个block中包含10个pages。最开始,所有的page都是空的。

现在,我们向flash写入一些数据。写操作(write operation / program operation)发生在page层。现在,系统使用情况变成了下[……]

Read more

[译] [NAND Flash] 4. The Flash Translation Layer

原文链接:https://flashdba.com/2014/09/17/understanding-flash-the-flash-translation-layer/

背景:Flash的数据修改机制采用的策略是,将修改后的数据写到新的page中,而把原本的page标记为invalid,后续对其进行回收。

功能诉求:

  • 将更新后的信息写到新的空page上,并将所有读请求都绑定到新地址;
  • 确保新编程的page均匀分布,以保证flash的损耗是均匀的;
  • 建立一个invalid pages的表格以供后续回收复用。

Flash Translation Layer (FTL)的功能:

[……]

Read more

[译] [NAND Flash] 1. Blocks, Pages and Program / Erases

原文链接:https://flashdba.com/2014/06/20/understanding-flash-blocks-pages-and-program-erases/

几个名词:

  • package, 即内存芯片。
  • die, 可独立执行指令及反馈状态信息的最小单位。
  • plane, 通常,并发操作在plane上执行(往往有一些限制条件)。
  • block, 最小可被擦除的单元,通常是4-8MB大小。
  • page, 最小可编程单元(例如写入),通常是8-16KB大小。

notion: 编程操作在page中进行,而擦除操作在block中进行;block需要擦除后方可进行再编程。

[……]

Read more