《数据密集型计算和模型》第三章的有关内容。主要有内存计算的概念、内存计算的硬件结构、内存计算的系统软件、内存数据库等相关内容。

文章目录

  • 一、内存计算的概念
    • 1. 为什么需要内存计算?
    • 2. 内存计算的概念
  • 二、内存计算的硬件结构
    • 1. 内存需要具有的三个特征
    • 2. 为了更快速处理内存中的数据采用的两种方式
    • 3. 用于内存计算的专业内存
    • 4. 用于内存计算的计算机体系结构
      • (1)基于传统X86的体系结构
      • (2)基于计算型内存的体系结构
        • 计算内存
        • 代表性的计算型内存
  • 三、内存计算的系统软件
    • 1. 内存文件系统
      • (1)文件的存储和分配方式
        • 树状存储方式
        • 混合索引存储方式
        • 映射表存储方式
      • (2)文件操作
        • 文件的基本操作
        • 垃圾收集机制
        • 文件系统一致性
        • 文件系统对于写次数的优化
    • 2. 任务及数据的调度
      • (1)编译器优化
      • (2)负载均衡
        • 任务负载评估
        • 数据和任务分发(数据分布及访问算法)
      • (3)任务分割(*)
  • 四、内存数据库
    • 1. 内存数据库的结构
    • 2. 内存数据库的关键技术
      • (1)存储
      • (2)数据访问
      • (3)查询
      • (4)并发控制
      • (5)日志处理
    • 3. 主流内存数据库及其优点
      • (1)TimesTen
      • (2)SAP HANA
      • (3)SolidDB
      • (4)SQL Server
      • (5)eXtremeDB
      • (6)ALTIBASE

一、内存计算的概念

1. 为什么需要内存计算?

  • 因为计算机在处理数据时,CPU首先从其cache中寻找数据,cache中找不到,再从内存中找;如果内存中找不到,再从磁盘上读取。
  • 如果将海量数据迁移到内存中,让计算、查询、分析在读写速度快很多倍的内存中直接进行,而不用访问物理磁盘,将会大大降低磁盘对整个计算系统性能的影响,显著提升计算机处理性能。

2. 内存计算的概念

内存计算可为两个层次的概念。

  1. 一个是将海量数据从磁盘迁移到内存当中进行查询、分析。这类内存计算非常适合处理海量数据。(移到内存)
  2. 一个是不仅可以完成传统的数据存储功能,还可以独立地对存储在自身上的数据直接进行计算。(独立计算)

二、内存计算的硬件结构

1. 内存需要具有的三个特征

为了将磁盘中的海量数据迁移到内存中,需要内存具有以下三个重要的特征;

  1. 需要有很高的容量-价格比
  2. 具有磁盘一样的非易失性
  3. 具有较高的访问速度和总线带宽

2. 为了更快速处理内存中的数据采用的两种方式

  1. 将传统的计算机体系结构进行改造,以支持更大的内存容量和更高的数据带宽
  2. 为内存计算设计全新的体系结构,这种体系结构赋予内存以计算能力,尽可能地将内存数据在原地进行计算,达到减少数据流动和I/O 访问的目的。

3. 用于内存计算的专业内存

  • BBSRAM:带电池静态随机存储器
  • NVRAM:非易失性静态随机存储器
  • FRAM:铁电存储器
  • MRAM:磁阻内存
  • STTRAM:自旋转移力矩随机存取存储器
  • RRAM:阻变随机存储器
  • PCM:相变存储器
  • 赛道内存
  • HMC:混合内存立方

4. 用于内存计算的计算机体系结构

主要分为两大类:基于传统X86的体系结构基于计算型内存的体系结构

(1)基于传统X86的体系结构

这个就是将海量数据迁到内存中。

新要求

  1. 更强的计算能力:CPU应该具有更多内核和更高的扩展性,进一步提高对海量数据的计算能力。
  2. 更大的内存容量支持:系统应该能支持TB甚至PB级容量的内存,存储海量数据。
  3. 更高的可用性:体系应该具有更高的可用性和鲁棒性,保证内存中的海量数据不会丢失。

(2)基于计算型内存的体系结构

这个就是讲计算单元嵌入内存中,直接在内存中进行海量数据的运算。

优点

  • 访问速度更快
  • 系统功耗降低
  • 带宽更高
  • 使用更灵活
  • 计算并行

计算内存

  • 计算内存:这种将计算单元与内存单元集成的内存称为计算内存。
  • 分为两大类:
    • 岛式计算内存结构:CPU和内存相互独立,CPU具有较为完整的结果和功能,内存和CPU通过总线连接。
    • 全集成计算内存结构:将简单的逻辑运算单元在生产过程中就与内存单元集成到一起。

代表性的计算型内存

他们的设计思想都是将内存和计算单元集成到一起而达到提高计算性能的目的。

  • FlexRAM
  • CIMM
  • IRAM
  • Activepages
  • DIVA

三、内存计算的系统软件

内存计算常使用非易失性内存(NVM)。断电时不丢失数据使得操作系统可以花费更少的精力在把内存的数据转化到外存中。

1. 内存文件系统

  • 元数据是描述数据的数据。
  • 在文件系统领域每一个文件对应一个元数据结构体。
  • 文件系统使用文件的元数据来描述文件并组织文件在物理存储上的空间。
  • 文件的存储方式主要是以元数据的存储方式来区别的。

(1)文件的存储和分配方式

树状存储方式

有三种文件类型:

  • 索引文件、目录文件、数据文件。

混合索引存储方式

  • 混合索引存储方式同样适用索引结点来实现文件系统数据结构

映射表存储方式

  • 也用索引结点来记录文件的基本信息
  • 映射表存储方式在从文件名到外存地址转换过程中加入了一个从文件名到虚拟地址的转换。
  • 映射表存储方式和核心部分是物理内存空间中第二部分的内存映射表。

(2)文件操作

文件的基本操作

  1. 创建文件
  2. 删除文件
  3. 读文件
  4. 写文件
  5. 打开文件
  6. 关闭文件

垃圾收集机制

  • 垃圾收集机制是一种特殊的文件操作,通常它在空闲块不够用而又有新的文件块请求时被自动调用以循环利用外存中的块。
  • 外存元数据块是最好的垃圾收集的候选。

文件系统一致性

在传统的文件系统中,如果出现了断点等原因导致文件系统崩溃,可能导致文件数据错误。

文件系统一致性包含了三个层次的概念

  1. 元数据一致性
  2. 数据一致性
  3. 版本一致性

常用的保持一致性技术

  • Fsck检查机制
  • 日志
  • 影子分页技术

文件系统对于写次数的优化

由于内存中大量的数据重复性写入,所以文件系统在设计过程中必须特别注意对NVM写次数的优化。

写次数优化策略

  • 强制换出策略:要一个计数器来记录一个NVM块的写次数,如果一个NVM块写次数过于频繁,则将这个块强制换出到外存。
  • 词条转换策略:在更细颗粒度的层次上控制写的次数。只要文件系统交换了数据块,该系统将改变单条数据在一个数据块中的偏移量。这样就防止了一个特定的数据结构中单个数据的重复写问题。
  • 分块转换策略:类似于词条转换策略,也可以在块的颗粒度上实现转换。

2. 任务及数据的调度

嵌入了计算单元的计算型内存为数据的并行计算带来了可能,而如何充分利用计算型内存的并行性成为提高整个内存计算体系结构性能的关键。目前主要有两种方法来提高并行计算的性能:

  1. 面向计算型内存体系结构优化的编译器
  2. 面向计算型内存体系结构优化的负载均衡调度策略。

(1)编译器优化

  • 在程序编译的过程中,编译器可以获得大量的有关代码数据结构、内存空间、逻辑嵌套等信息。
  • 利用这些信息,可以针对计算型内存的体系结构特点进行编译级别的优化。
  • 通过对编译器的优化,能够合理地分配带宽和缓存结构,达到优化任务执行的目的。

(2)负载均衡

为了克服计算型内存结构所遇见的问题,从现有机制的不足和计算内存体系结构的特点出发,从任务负载评估数据分布及访问算法任务分割 三个方面进行研究。

任务负载评估

SAGE----一种面向FlexRAM结构的解决方法。

  • 可以通过对程序部分执行代码的分析来预测程序执行总时间 或者 根据程序代码不同指令的执行时间表估算整个程序的总执行时间。
  • SAGE将系统分为三个基本类型:
    1. 运算
    2. 内存访问
    3. 代码动态执行

数据和任务分发(数据分布及访问算法)

  • 集成了计算单元的计算型内存打破了传统冯诺依曼结构所带来的内存墙,提高了内存带宽和容量。
  • 需要合理地将数据分配到各个计算内存单元之中,降低计算内存阵列之间的通信及数据流动。
  • 计算内存体系结构上的数据分布可以分为系统初始化数据分布系统运行时数据分布两个方面。

1、为了将数据合理的分配到各个计算单元中,需要满足以下规则

for each data i dofor each processor node j docompute the total communication cost when data i put in node jodsort processor nodes using the cost as a key in ascending orderput data i in the node with mininum total communication cost
od
  • 以上计算过程,系统中的总访问时间被降到最低。
  • 但是计算单元所集成的内存是有限的,故会出现计算单元集成内存不足以容纳数据的情况,这就造成了数据与计算内存之间的分配冲突

2、解决数据分配冲突算法

  • 首先应当遵循前面的数据分配规则,视图将数据合理的分配到各个计算内存中。
  • 当数据出现冲突时,系统把冲突的数据放入等待队列中,等到其他数据被合理地分配到最佳的计算内存中去后,在重新为这些缓存数据分配存储位置。
for each data i dofor each processor node j do compute the total communication cost when data i put in node jodsort the processor nodes in ascending order of the communication costsave in the processor listu = pop(processor list)if u's memory is not full then assign data i to uelse put data i into the waitingQueuefi
od
while waitingQueuee not empty dodequeue(data, waitingQueue)u = (processor list)if u's memory is not full then assign data i to u;breakelse enqueue data i into the waitingQueuefi
od

3、寻找路径将数据分发到内存

  • 当需要计算的数据和程序依据上面提到的初始化规则被分配到计算内存后,系统开始执行程序。
  • 在程序执行过程中,程序所需要的数据可能会发生变化,这需要对系统运行时的数据和程序进行分发。
  • 在PetaFlop中,系统为数据向各个计算单元的移动所付出的代价进行估算,形成一张边加权无环图,然后从这张图中找到消耗最小的路径,并通过这条路基将数据分配到计算内存中
for each data i do for each processor node j do compute the total communication cost when data i put in node jodconstruct the cost-graph for data iobtain the shortest path from s
assign data i to the processor lying on the shortest path in each execution window
od

(3)任务分割(*)

SAGE实现了一种面向计算内存体系结构的任务分割方式。

  • 首先SAGE分析程序,然后依照依赖关系将程序分割成一些代码块。
  • 并根据这些代码块所需要的计算能力,为每个代码块分配一个权重值。
  • 最后,根据这些代码块的权重值将他们分发到与之匹配的计算单元中。
  • 与其他并行系统不同,SAGE进行代码分析的单位是代码块而不是循环结构。

四、内存数据库

内存数据库(MMDB)的主要设计理念:是将数据从磁盘迁移到内存中,从而直接消除磁盘I/O 对数据库速度的响应,达到提高数据库事务处理性能的目的。

内存数据库适用于需要快速响应高事务吞吐量的应用环境。

MMDB优点

  • 完成同样功能所需的机器指令大大减少
  • 不再需要缓冲区管理器
  • 简化了内存管理,降低了内存开销

1. 内存数据库的结构

内存数据库依托操作系统提供的共享内存机制,将整个数据库装入一块共享内存当中,访问数据库的进程只需要将整个数据库的一部分映射到本进程的虚地址空间,即可实现对数据库的直接访问。

2. 内存数据库的关键技术

(1)存储

  • 内存数据库在数据存储上的主要性能瓶颈转化为内存数据访问的延迟和处理器运行数据管理算法的延迟。为了减少这些延迟,一般采用空间换时间的策略。
  • 内存数据库的设计不仅要考虑内存访问方式,也要考虑缓存对数据访问的影响。

(2)数据访问

  • 大多数磁盘数据库在数据访问中所使用的数据结构不能直接使用在内存数据库上。
  • 对于那些不能存放在索引结构中的数据,内存数据库使用指针“间接”访问数据。

(3)查询

  • 内存数据库查询操作的主要开销是处理器的计算时间内存访问时间
  • 减少开销:
    • 将表中外键用外键指针来标志
    • 在物化的中间结果上也只需要保存指向实际值的指针,而不必将实际数据拷贝到中间结果表上。

(4)并发控制

  • 内存数据库由于其高速的内存数据访问而大大缩减了事务的执行时间。
  • 对数据库加锁使得所有的事务串行化执行,这可以带来很多并行执行所没有的优点:
    • 可以消除许多并发控制上的开销
    • 事务的串行化执行使得在处理过程中的处理器缓存上下文无须切换。

(5)日志处理

  • 写入非易失性存储体中
  • 分组提交
  • 预提交

3. 主流内存数据库及其优点

(1)TimesTen

内存数据库TimesTen支持的系统包括实时计费系统、股票交易系统、呼叫中心系统、航线运营系统等

优势

  1. 能够和Oracle后台数据库无缝集成,
  2. 支持多节点并行提供服务
  3. 符合RDBMS独立内存数据库服务标准
  4. 支持SQL92
  5. 支持ODBC&JDBC
  6. 高性能
  7. 可作为Oracle数据库的前端cache
  8. 支持本地高速访问和网络访问方式可靠性高。支持完整日志,支持镜像复制功能。

劣势

  1. 代码不开源,需要较高的费用
  2. 目前不支持存储过程和触发器

(2)SAP HANA

(3)SolidDB

(4)SQL Server

(5)eXtremeDB

(6)ALTIBASE

《数据密集型计算和模型》第三章_内存计算复习相关推荐

  1. 《数据密集型计算和模型》第二章大数据时代的计算机体系结构复习

    <数据密集型计算和模型>第二章的有关内容.主要复习内容为:计算部件.存储部件.网络部件.软件定义部件.虚拟资源管理系统等. 文章目录 大数据时代的计算机体系结构 一.计算部件 1. 多核和 ...

  2. 云计算与大数据第16章 分布式内存计算平台Spark习题

    第16章 分布式内存计算平台Spark习题 16.1 选择题 1.Spark是Hadoop生态(  B  )组件的替代方案. A. Hadoop     B. MapReduce        C. ...

  3. 计算机组原理ppt,计算机组原理第三章.ppt

    计算机组原理第三章 计算机组成原理 毛典辉 北京工商大学计算机与信息工程学院 Email: amaode@ 进一步结论: 当最高有效位产生进位而符号位无进位时,产生上溢: 当最高有效位无进位而符号位有 ...

  4. 第三章网络介质计算题及其解析[计算机网络]

    总结一下计算机网络学期课程所学,方便以后的复习和补充.       本文主要是第三章网络介质计算题部分.需要掌握的知识点如下图.       需要手写记录的笔记pdf和课本pdf可私信. 文章目录 第 ...

  5. Tableau基础-第三章(快速表计算)

    从头开始学Tableau-第三章(快速表计算) 第一章 第二章 数据源 这一章主要介绍一下快速表计算,在前面的2章中我们基础的了解了一下Tableau的函数,有时候并不希望每一个指标值都用函数去构造, ...

  6. FVM in CFD 学习笔记_第9章_梯度计算

    学习自F. Moukalled, L. Mangani, M. Darwish所著The Finite Volume Method in Computational Fluid Dynamics - ...

  7. 大数据技术原理与应用 第三版 林子雨 期末复习(二) Hadoop HDFS HBase

    大数据技术原理与应用 第三版 林子雨 期末复习(二) Hadoop HDFS HBase Hadoop生态系统 HDFS HDFS结构 块 Name Node与Second Name Node与Dat ...

  8. Java并发编程 - 第三章 Java内存模型

    前言: Java 线程之间的通信对程序员完全透明,内存可见性问题很容易困扰 Java 程序员,本章将揭开 Java 内存模型神秘的面纱. 一.Java 内存模型的基础 1.1 并发编程模型的两个关键问 ...

  9. 华为云大数据存储的冗余方式是三副本_阿里云大数据产品 | 大数据计算

    阿里云大数据计算产品包括MaxCompute.E-MapReduce和实时计算(Alibaba Cloud Realtime Compute). 一.MaxCompute 1.MaxCompute概述 ...

最新文章

  1. 工作笔记---巡检记录
  2. 20、C#里面方法的创建和显示
  3. Cygwin鸡毛蒜皮
  4. 如何使用OpenCV和Socket进行视频聊天?
  5. Selenium指定浏览器路径
  6. linux mint 17.3 内核,LinuxMint 17.3 Cinnamon抢鲜评测
  7. C++ 32位和64位
  8. Nginx基于TCP的四层负载均衡介绍
  9. 快速构建Windows 8风格应用15-ShareContract构建
  10. 分站实现php,php城市分站是什么原理
  11. 如何在 C# 中使用 Attribute
  12. cvs配电保护断路器_电工电器(三)-配电电器-断路器类-剩余电流保护断路器
  13. 生成指定大小的空文件
  14. rmi反序列化导致rce漏洞修复_企业安全05-Fastjson =1.2.47反序列化RCE漏洞(CNVD-2019-22238)...
  15. 96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦
  16. hooks taro 下拉刷新_Hooks
  17. 做下一个互联网时代的“水电公司”——融云的通信云视野与蓝图
  18. Github - 第一篇:Github安装与配置
  19. python 代码检查工具
  20. 如何通过stm32驱动电源检测芯片cs5463

热门文章

  1. python 动态导入模块和类
  2. Ubuntu18.04安装pcl教程以及踩坑记录
  3. python2G expanding 的用法, 最大回撤
  4. 转置(transpose)的理解
  5. 网络视频会议开发之如何进行噪音消除
  6. horovodrun命令参数解析
  7. win10 pip安装mmcv-full
  8. spring RestTemplate 实例(NameValuePair)
  9. 测试通达信指标胜率的软件,如何测试通达信指标成功率?
  10. 云服务器安装SSL证书,实现https访问