moore 数据集_可计算存储: 数据压缩和数据库计算下推

82225d2261c7d352971e9d66356c24af.png

”摩尔定律失效“指的是什么?

2016年2月9号《自然》杂志的《The chips are down for Moore’s law》写到即将出版的国际半导体技术路线图不再以摩尔定律(Moore’s law)为目标,芯片行业50年的神话终被打破。

7619711d37d4b8ba8d5e3f29b65cae4c.png
Figure. 1

狭义的摩尔定律指每18到24个月,芯片上晶体管集成的密度会翻一番或者价格下降一半,它连接了价格和集成度。但我们普遍所讨论的是摩尔定律其实包含"摩尔定律"、"登纳德缩放"和"波拉克法则"三个重要法则。

登纳德缩放定律(Dennard Scaling)的核心观点是,随着晶体管密度的增加,每个晶体管的功耗会下降,因此,每平方毫米硅的功耗几乎是恒定的。 由于硅的计算能力随着每一代新技术的发展而提高,计算机将变得更加节能。

波拉克法则(Pollack's Rule)则指出,同制程工艺下,处理器的性能提升幅度,是芯片面积(晶体管数量)提升的平方根。

登纳德缩放定律(严格说是预测)在2007年开始显著降速,并在2012年几乎消失,如下图所示:

0abe79e6407ec4ee41c2ea88416b63fb.png
Figure. 2

所以,常说的”摩尔定律失效“指的是基于三个重要法则构建的用户价值三角(价格、集成度和性能)的失效。

异构计算

2017 年图灵奖获得者John L. Hennessy and David A. Patterson在他们的文章《A New Golden Age for Computer Architecture》中指出通过异构处理器优化设计时间和成本。

As the focus of innovation in architecture shifts from the general-purpose CPU to domain-specific and heterogeneous processors, we will need to achieve major breakthroughs in design time and cost.

异构计算指将不同体系架构不同指令集(精简指令集和复杂指令集)的计算单元组合使用,将最合适的任务交给最擅长的计算单元(包括CPU、GPU和FPGA等),最大程度发挥各类计算单元的优势。

可计算存储和数据压缩

可计算存储可简单的理解成在原有的存储介质(比如NVMe SSD)上叠加计算单元(比如FPGA),并由该计算单元加速跟存储直接相关的计算任务,实现CPU计算任务卸载(Offload)。但持久化应用的相对复杂,如果不能洞察面临的重要问题、理解现存方案的取舍(Tradeoff)和提出创新性的设计方案,可计算存储很难发挥真正价值。计算机体系结构泰斗Yale Patt教授曾提出的Look backward(to the past),Look forward(to the future),Look up(to the problem)和Look down(to the device)在存储领域同样适用。

Look up(to the problem),存储实现信息跨越时间的传递,对它的抱怨永远是”不够快,不够大“。SSD的出现极大的提升了存储性能(IOPS和Latency),但是逐年下降的价格依旧跟不上数据爆炸式的增长。SSD的特性决定容量不仅影响成本,也影响性能。SSD不能像内存和机械硬盘直接覆盖旧数据,只能擦除Block后才能写入其中一个“干净”的Page。当SSD剩余空间变少,出现大量数据碎片时,就要读取整个Block数据,将有效数据重新写到已经擦除的Block。这个过程叫Garbage Collection (GC),导致写放大(Write Amplification)。单个擦除操作延迟是写操作延迟的几倍,而写操作的延迟又是读操作的几十倍。在混合读写的场景,GC会引发延时抖动,影响性能。为降低GC频率,SSD不仅会优化GC算法(比如“greedy reclaiming policy”),如下图所示:

7ed4ad57c9bd33ce7ddb7b5db7d14172.png

同时也会留出空间(也叫OP: Over Provision),企业级SSD的OP通常是28%,消费级SSD内部的OP通常是7%。IBM研究院的相关研究指出剩余空间为10%时写放大在3.5倍和4.5倍之间,剩余空间为30%时写放大可减少为0.2,如下图所示:

6b36b52ff45cc3ec7d281124bf2988e2.png

所以减少写入的数据量,不仅节省空间,也优化性能。针对不同场景,业界提供了很多压缩算法,比如zstd,zlib,brotli,quicklz,lzo1x,lz4,lzf,snappy...。现有的解决方案可简单归纳成软压缩(基于CPU)和硬压缩(基于加速卡)。

《硅谷》中年轻的计算机天才Richard发明的超越理论极限的压缩算法”middle-out”,并由此组建了Pied Piper公司。

软压缩(基于CPU)

8901a453c67172cf05951b0ea319711e.png

如上图所示,压缩和解压完全由CPU提供算力。“牺牲”CPU资源换取存储空间,存在个突出的问题:

  • CPU抢占:会占用大量CPU资源,同时也会跟应用抢占CPU资源。
  • 数据复制导致的带宽抢占:在主存和CPU之间引入频繁且大量的数据复制(DRAM<-->L3 Cache<-->L2 Cache<--> L1 Cache<-->Registers),抢占服务器PCIe 带宽和内存带宽,同时带来潜在的CPU Cache Miss,进一步影响计算效率。
  • 时延不稳定:因为CPU抢占和带宽抢占,当OS负载较高时,OS中的时钟中断和任务调度增加了延迟的不确定性,这是IO密集型业务很难忍受的。

硬压缩(基于压缩卡)

1f3dfe515d16620c8eeff3e32e626645.png

如上图所示,专有压缩卡提供压缩和解压算力,释放CPU资源,实现CPU-Offload,但是并不彻底。频繁且大量的数据复制依然存在,即便压缩卡使用DMA技术,也无法彻底实现Zero-Copy,DRAM和压缩卡之间依然存在频繁的数据复制,抢占大量的服务器带宽资源。同时,因为数据链路中增加压缩卡,势必增加IO时延,尤其是数据库和高速块存储系统的小数据块(如4KB、8KB、16KB)场景。

可计算存储

针对已经存在的问题,可计算存储的思路如下:

  • CPU-Offload:采用FPGA完成压缩和解压缩计算,实现CPU-Offload。Look down(to the device),FPGA 在低延时上具备天然的优势,非常适合计算密集型任务(比如矩阵运算、压缩和非对称加密)。首先,片上集成缓存和DRAM接口,减少与CPU交互,免于OS的进程调度和进程间干扰,从而提供可预期的时延。同时,FPGA 基于定制流水线 MIMD设计,同时拥有流水线并行和数据并行,进一步降低时延。下图(Figure. 5和Figure. 6)是FPGA应用于Bing搜索排名中的查询加速,可以观察到更低的平均延时;

bb1e949f76d8352f23f1cf89e105a43b.png

Figure. 5

0ca75796e028b2a5d9ccaadbd10ca04a.png

Figure. 6

  • Zero-Copy:以内置FPGA的方式,不改变原有的数据路径,完全在盘内进行压缩解压任务(又叫in-situ processing),避免额外的数据复制,这也是为什么可计算存储又叫”近“存储计算的原因;

如下图所示:

d92ba14b7689a132769b7dbff236b224.png

可计算存储和数据库计算下推

Look forward(to the future),IDC(International Data Corporation)预计到2025年全球数据将达到175ZB。即便考虑压缩技术,存储介质的容量和数据量的增速剪刀差会越来越明显。

可以做个简单的算术题,读取1PB数据,仅考虑数据从存储介质传输到到主存(DRAM),PCIe 3.0 * 32、PCIe 4.0 * 32 和PCIe 5.0 * 32分别耗时多久?如果数据存放存储阵列上,使用100Gbps存储网络,耗时多久?如下所示:

100Gbps ======================= 24小时
PCIe 3.0 ======== 9小时
PCIe 4.0 ==== 4.5小时
PCIe 5.0 == 2.25小时

Look backward(to the past),在现代处理器系统中,CPU高速缓存处于内存系统的顶端,其下是主存(DRAM)和存储介质。在一个现代处理器系统中,CPU高速缓存通常由多层次组成(L1,L2 和 L3 Cache)。 基于时间局部性,CPU数据读取时将访问各级Cache直至到达主存(DRAM)。如果需要访问的数据在CPU高速缓存中命中,将不会访问主存(DRAM),以缩短访问延时,访问流程大致如下:

存储介质<-->主存(DRAM)<-->CPU(L3 Cache<-->L2 Cache<--> L1 Cache<-->Registers)

在联机分析(OLAP)的场景中,如果同一作业的运行频率低,不同作业之间数据的关联度低,使得现有缓存体系极为低效甚至失效,比如热数据被换出引发Cache Miss,导致应用性能急剧下降。在数据库领域有不同的解决思路,以 Oracle 为例:

缩短数据量的移动路径:数据库默认总是先将数据读取到自己维护的高速缓冲,Oracle 11g开始采用直接路径读取来扫描大表(默认 2% * buffer cache),从而绕开buffer cache,避免热数据被换出引发缓存命中率下降; 减少移动的数据量:Oracle Exadata Smart Scan,该特性能通过将大部分的SQL操作下推(又叫卸载)到存储节点完成,极大的减少了存储节点和数据库节点之间的数据量;

数据增长永无止境,硬件性能终会遇到天花板,减少移动的数据量似乎更有启发。

阿里云POLARDB联合ScaleFlux也采用了第二个思路,在《POLARDB Meets Computational Storage: Efficiently Support Analytical Workloads in Cloud-Native Relational Database》已有部分介绍,Scaleflux 首席科学家张彤教授也在FAST 2020有精彩论述。

当说下推时,到底指的是什么?可以从 MySQL 特性 Index Condition Pushdown(简称ICP)入手,建立更具体的认识。

关闭 ICP

未启用ICP特性时,会按照第一个索引条件列到存储引擎查找数据,并把整行数据提取到数据库实例层,数据库实例层再根据Where后其他的条件过滤数据行。如下图所示:

ceaa3db5452dfef45007ec7b489b62a2.png

Figure. 8

启用 ICP

启用ICP特性后,如果Where条件中同时包含检索列和过滤列,且这些列上创建了一个多列索引的情况下,那么数据库实例层会把这些过滤列同时下推到存储引擎层,在存储引擎层过滤掉不满足的数据,只读取并返回需要的数据,减少存储引擎层和数据库实例层之间的数据传输和回表请求,通常情况下可以大幅提升查询效率。如下图所示:

9ccf1aff1bb8a9bcab5c5cf47e2b41a2.png

Figure. 9

数据库计算下推

MySQL ICP虽然将MySQL Server层的过滤下推到存储引擎层,但仍需要消耗CPU资源,严格来说,这不是真正意义的下推。如果要更进一步,可以考虑将第4步下推到可计算存储,原因如下:

  • 收益大:关键步骤,由它完成实例层向存储引擎层的下推,符合”近“存储计算原则,实现收益相对大;
  • 成本低:从调用关系看,对数据库实例层影响很小,绝大部分改动可在存储引擎层完成,修改和验证成本相对低;
  • 对FPGA友好:易于并行,对计算密集任务友好(比如压缩,加密,计算,过滤和聚合),;

如下图所示:

100d27d04b96e625f284e8410b8742f1.png

受篇幅和能力所限,省略了一些细节。比如:

在压缩和解压缩的场景中,追求极致的压缩率或性能都会相对容易,但是对于持久化业务而言,往往是既要(压缩率)又要(时延)。在这些前提要求下,可计算存储在提供稳定IO时延的同时实现了数据压缩,降低了存储成本。当然,要实现并发布商用产品涉及的内容就太多了,比如,FPGA选型(资源和功耗),如何调试压缩算法以对FPGA更友好,面对不同压缩比的数据如何提供可预期的时延,如何提供对应用透明的使用体验,如何实现LBA(逻辑地址)和PBA(物理地址)变长映射等等。

在计算下推的场景中,设计的内容包括如何识别底层的CSD设备以及暴露的Pushdown接口,如何将下推的条件传输给硬件,如何优化设备内部逻辑(流式处理和并行数据过滤),存储数据格式修改以对流式处理更友好,因为bypass文件系统如何修改现有的监控...。

Yesterday’s technologies, today’s problem

从曾经的专有计算,再到Intel奠定的通用计算,再到今天的异构计算。历史总是惊人的相似又被赋予新的内涵。计算机领域的创新也未必都是天才们”灵光乍现“, 更多时候是建立在对已有系统(软件和硬件)深刻理解之上, 用一个新的角度解决问题。可计算存储将会给持久化应用,尤其是数据库,带来更多深远的影响和变化。

What we have before us are some breathtaking opportunities disguised as insoluble problems.

作者 :熊中哲@ScaleFlux

ScaleFlux 成立于2014年,其领导者被证明可以批量部署复杂的计算和固态存储解决方案。 计算存储是现代数据驱动的基础,该架构可为计算和I/O密集型应用提供低延时、易扩展和敏捷的能力。

引用

  • A New Golden Age for Computer Architecture
  • A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services
  • A Cloud-Scale Acceleration Architecture
  • 浅谈 Cache Memory
  • wiki Locality of reference
  • Index Condition Pushdown Optimization
  • Write Amplification Analysis in Flash-Based Solid State Drives
  • Write Amplification
### 回答1: Moore数据集是一个经典的机器学习数据集,其中包含了来自1965年到2010年间计算机芯片的发展数据。这个数据集主要用于预测计算机芯片的性能(每年芯片上的晶体管数量)的发展趋势。 在Moore数据集中,数据类别主要分为两类:年份和晶体管数量。年份是数据的输入特征,表示芯片的生产年份,通过年份我们可以观察芯片晶体管数量的演变。年份以连续的方式给出,从1965年到2010年,每个年份对应一个数据点。 晶体管数量是数据的输出特征,它表示芯片上的晶体管数量,这个特征是我们想要进行预测的目标。晶体管数量以整数形式给出,代表着芯片的性能。根据Moore's Law(摩尔定律),芯片上的晶体管数量每隔18-24个月会翻倍,因此芯片数量是递增的。 总而言之,Moore数据集的数据类别主要有年份和晶体管数量。年份作为输入特征,用于观察晶体管数量随时间变化的趋势;晶体管数量作为输出特征,是我们想要预测的目标,代表着芯片的性能。通过这个数据集,我们可以分析芯片晶体管数量的发展趋势和了解计算机技术的进步。 ### 回答2: Moore数据集是一个经典的机器学习数据集,它包含了过去几年来半导体行业中微处理器的制造数据。这个数据集中的每个样本具有14个特征,包括晶体管的数量、电流的大小、功耗等信息。根据这些特征,我们可以将Moore数据集的数据分为两个类别。 第一个类别是成功的芯片。这些芯片具有相对较高的品质和性能,并得以在市场上成功销售。通过对这些成功芯片的数据进行分析,我们可以发现它们具有一些共同的特征,例如晶体管数量较多、电流和功耗适中等。 第二个类别是失败的芯片。这些芯片没有达到预期的品质和性能,无法满足市场需求,因此没有成功销售。通过对这些失败芯片的数据进行分析,我们可以找出它们与成功芯片有所不同的特征,例如晶体管数量过少、电流和功耗过高等。 通过对这两个类别的数据进行分析,我们可以建立一个分类模型,用于预测新的芯片是否属于成功或失败的类别。这对制造商和消费者来说非常有价值,因为它们可以使用这个模型来评估新研发的芯片是否有潜力成为成功的产品。同时,分析这些数据还可以帮助制造商优化芯片的设计和制造过程,以提高芯片的质量和性能。 ### 回答3: Moore数据集是一个包含了近几年晶体管数量随时间的变化的数据集。该数据集一共有两个特征:年份和晶体管数量。根据这两个特征,可以将数据集中的样本划分为两个类别:年份和晶体管数量高于某一特定阈值的样本,以及年份和晶体管数量低于该阈值的样本。 具体来说,在该数据集中,如果我们设定某一年份为阈值,那么所有该年份以后生产的晶体管数量都会被归为第一类(高于阈值),而该年份以前生产的晶体管数量则会被归为第二类(低于阈值)。 这两个类别反映了晶体管数量随时间的增长趋势。第一类的样本代表了晶体管技术的快速发展和数量的增多,而第二类的样本则反映了较早年份生产的晶体管数量较少。 总结来说,Moore数据集的数据类别是根据年份和晶体管数量的大小划分出的两个类别,用于研究晶体管数量随时间的增长趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值