没有合适的资源?快使用搜索试试~ 我知道了~
宽松定时事务级模型的并行标准兼容SystemC仿真加布里埃尔·布斯诺特引用此版本:加布里埃尔·布斯诺特。宽松定时事务级模型的并行标准兼容SystemC模拟。计算和语言[cs.CL]。里昂大学,2020年。英语。NNT:2020LYSE1315。电话:03364390HAL ID:电话:03364390https://theses.hal.science/tel-03364390提交日期:2021年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaireNNT订单号里昂大学博士论文集操作范围l’Université Claude Bernard Lyon第512号博士学校信息数学博士专业:计算机科学于2020年12月18日公开支持,作者:加布里埃尔·布斯诺特并行仿真并符合SystemC标准的模型释放时的事务性在陪审团面前,陪审团由:Guérin Lassous,Isabelle大学教授克劳德·伯纳德·里昂大学1评审团佛罗伦萨马拉宁奇大学教授格勒诺布尔阿尔卑斯大学报告员Pêcheux,François索邦大学教授报告员Liliana Andrade高级讲师格勒诺布尔阿尔卑斯大学考试员Dömer,Rainer大学教授加州大学Maillet-Contoz考官,Laurent工业经理意法半导体审查员Moy,Matthieu Claude Bernard Lyon大学讲师1 Sassolas博士生导师,Tanguy CEA工程师研究员共同主管Ventroux,Nicolas工业经理泰雷兹联合主管,特邀嘉宾谢谢你我将很难说出所有在这篇论文中支持我的人的名字首先,我要感谢克劳德·伯纳德·里昂第一大学的高级讲师马修·莫伊,尽管他离首都很远,但他还是仔细地指导了我的论文。 我还要热烈感谢CEA List的Tanguy Sassolas和NicolasVentroux,感谢他们的日常指导和持续的乐观态度,没有他们,我可能不会完成这项工作。还要感谢格勒诺布尔阿尔卑斯大学的弗洛伦斯·马拉宁基和索邦大学的弗朗索瓦·佩舍,他们同意担任报告员,并花了很多时间对我的手稿进行批判性我还要感谢我的辩护小组的其他成员:莉莉安娜·安德拉德、雷纳·多默、伊莎贝尔·盖林·拉苏和洛朗·梅莱-孔托兹。但如果不感谢我的随行人员,这一部分在很大程度上是不完整的:与我的同事们就各种各样的话题进行了交流,从最技术性的到最非正式的,我的朋友们,CEA和其他地方的朋友们,他们耐心地听我抱怨,或多或少地戏剧化了三年;杰森,他在最后定稿前几天自愿审阅了我的整个手稿;最后是我的家人和我的伴侣,他们虽然不知道我每天在屏幕前做什么,他们一直相信我,他们是对的,因为我今天写这篇文章最后,感谢CEA资助这三年的博士论文35详细总结概述演示文稿本文的重点是SystemC并行仿真具体地说,它针对的是一系列所谓的交易模型。本论文的主要贡献是并行SystemC仿真内核的设计和开发。 此内核允许在 添 加 特 定注 释 后 并 行 执 行 标 准 S y s t e m C 模 型 。手稿分为五章。第一章介绍了SystemC的一般概念以及信息技术中的并行和并发。第二章介绍了论文的主题以及第三章是手稿的核心。它解释了为实现事务模型的并行SystemC仿真而实现的主要过程。第四部分介绍了第三章所述过程的实验。这些实验强调了在模拟在诸如Linux的操作系统下运行的软件的情况下的局限性第五章也是最后一章分析了这些观察结果的原因,并提出了具体的解决方案及其实验评估。第一章在第一章中,介绍了并发和并行的一般概念,它们在并行SystemC仿真的上下文中紧密共存这两个概念之间有时微妙的相似之处和不同之处通过例子来说明然后介绍了硬件描述语言SystemCRTL描述级别是SystemC的初始目标,用于说明SystemC的基础,包括最后,引入了最新级别的事务描述描述了"近似"和"松散"两个级别的时间管理精度,以及标准的现代建模技术,如直接存储器本手稿中开发的过程6第二章第二章首先简要概述了用于SystemC模型仿真的常用加速技术。因此,在仿真内核级别选择SystemC进程之间的并行是合理的。然后讨论了专门针对SystemC过程的并行评估的障碍。 特别是,通过示例介绍了"线程安全性" 1和SystemC进程的原子性问题。对过程的非原子评价在这里被称为冲突。第二章的第二部分是并行SystemC仿真技术的最新发展。报告了许多方法:同步或异构时间仿真、GPU或专用硬件上的加速仿真、分布式或集中式仿真、可重现或不可重现的执行或RTL或TLM仿真。 从这项研究中可以明显看出,一种独特的方法可以有效地支持时间松弛的事务模型,特别是那些使用时间分拆和DMI协议的模型。这就是Scale1.0,一个并行的SystemC仿真内核,它是本文所介绍工作的起点。 因此,在第2章的最后部分更详细地介绍了Scale1.0,并对其局限性进行了细致的分析。结果表明,尽管提出了理论上有效的机制,但这些机制不适用于许多模拟软件,特别是在Linux下运行的软件还存在重要的性能问题第3章本章介绍Scale2.0,它是Scale1.0的一次重大重新设计。Scale1.0中的大多数机制都被取代了,只有一般的方法仍然具有可比性:模拟内存访问的仪器化,以控制进程之间的交互并保持它们的原子性。其主要思想仍然是确保进程之间的内存访问交互描述进程之间的偏序,即存在产生与当前并行评估相同结果的顺序评估。本章首先描述了然后详细介绍了在并行阶段中具体应用的过程,首先保证了并行阶段中过程之间的不依赖性,这是允许许多优化的基本属性。一个1线程安全性是指一段代码可以由多个线程同时执行而不会导致不一致的事实7××然后定义提供所讨论的保证的存储器访问授权策略并行阶段之后可以是顺序阶段,然后描述该顺序阶段:评估在并行阶段期间暂停的进程的顺序,使用存储器访问的先前记录来验证进程之间的依赖性,生成允许模拟再现的跟踪,以及在违反进程原子性的情况下最后,通过将模拟模型的每个部分视为在最广泛的意义上可以读取或写入的资源,如存储器地址,来管理通过共享存储器的交互的系统被推广到任何类型例如,这允许通过中断(定时器、处理器间等)来支持交互第四章第四章是对第三章所述过程的实验分析。描述了托管实验的36核服务器和模拟模型:一个对称的共享内存架构,由QEMU模拟1到32个RISC-V核介绍了并行矩阵乘法、Deriche滤波边缘检测和Mobilenet卷积神经网络的baremetal2基准测试,以及它们在Linux下的版本,以及来自Parsec套件的Blackscholes和Swaptions基准测试还提出了一个基于高度随机基准测试的实验性SCAle 2.0功能验证方案。 它说明了Scale2.0在使用模拟再现功能时始终生成相同结果的能力。如果未启用此功能,基准测试结果将显示出很大的可变性本章的其余部分将介绍Scale2.0提供的仿真性能在参考SystemC内核上观察到的加速度达到15,在Scale1.03上观察到的加速度达到110。另一方面,Linux应用程序的加速明显不太令人满意,因为它仍然低于4。这些结果将在本章的其余部分进行 此分析强调了各种因素,如模拟Linux引导和关闭时的不良并行化潜力。然而,主要原因主要在于存在2在没有操作系统支持的情况下,在硬件上运行的软件[3] Scale1.0的性能下降是因为它的使用环境与开发环境大不相同。特别是,在这种情况下,存储器访问的频率要高出几个数量级,使仪器系统完全饱和8×冲突需要如此多代价高昂的挫折。这表明,尽管Scale2.0在大多数情况下都非常有效,但仍有一些内存访问方案第五章第五章也是最后一章为第四章最后一部分确定第一个问题涉及模拟中可并行性较差的部分,如Linux引导。这些部分对于Scale2.0用户来说通常也不感兴趣,因为他们主要希望测试他们开发的在Linux上运行的软件。提出了一种模拟精度的变化系统 它允许动态选择内存访问的模拟模式,特别是允许直接在QEMU中执行这些操作,而无需使用SystemC模型。另一方面,不再可能进行并行模拟, 这种不精确但快速且确定性强的顺序仿真模式特别适合于仿真用户不直接感兴趣的代码部分。速度变慢的第二个主要原因是大量的冲突集中在模拟的某些部分,这些冲突本身就造成了整体性能的对这些冲突起源的研究表明,Linux内核的证明代码是造成大多数冲突的原因(例如,支持内存错误和文件系统管理)。这些冲突本质上难以预测,因此难以可靠地避免。因此,所选择的解决方案是不并行模拟属于Linux内核的代码。模拟处理器的特权级别用于此目的:一旦处理器具有最低用户特权级别,模拟该处理器的进程将按顺序运行,因此,几乎所有的冲突都被避免了,代价是几乎无法测量的速度减慢,因为大多数模拟代码都是在用户模式下执行的最后,使用这些最新技术实现了Scale2.0性能的新测量。在所有基准测试中,相对于参考顺序内核的加速度与Scale的比较1.0 n’est pas possible, ce dernier ne supportant pas la simulation de systèmesexécutant9出版物• 文章:– 加布里埃尔·布斯诺特,唐吉·萨索拉斯,尼古拉斯·文特鲁,马蒂厄·莫伊。宽松定时事务级模型的标准兼容并行系统C模拟。 ASP-DAC 2020年- 第25届亚太设计自动化大会,2020年1月,中国北京。pp.1-6. 哈尔-02416253>– 加布里埃尔·布斯诺特、唐吉·萨索拉斯、马蒂厄·莫伊、尼古拉斯·文特鲁。宽松定时事务级模型的标准兼容并行SystemC模拟:从标准到基于Linux的应用程序支持。超 大 规模集成电路– 阿米尔·谢里夫、加布里埃尔·布斯诺特、拉尼娅·马梅什、唐吉·萨索拉斯、尼古拉斯·文特鲁。用于嵌入式计算系统设计和探索的快速虚拟原型。第11届快速模拟和性能评估研讨会:方法和工具,2019年1月,西班牙巴伦西亚。10.1145/3300189.3300192>.&<<• 专利:– 加布里埃尔·布斯诺特唐吉·萨索拉斯尼古拉斯·文特鲁。一种通过多核离散事件仿真计算机系统实现的电子系统级可重复并行仿真过程。FR1911332– 加布里埃尔·布斯诺特,唐吉·萨索拉斯,马修·莫伊。 一种通过多核离散事件仿真计算机系统实现的电子系统级可重复并行仿真过程。FR2012150• 海报:– 加布里埃尔·布斯诺特,唐吉·萨索拉斯,尼古拉斯·文特鲁,马蒂厄·莫伊。运行Linux的多核平台的并行SystemC模拟。ACACES海报会议,2018年7月,意大利菲乌吉。内容。导言131并行计算和SystemC仿真背景171.1导言181.2竞争与平行181.2.1竞争181.2.2使用Coroutines 19对并发进行细粒度控制1.2.3平行性211.2.4使用线程实现并行计算1.3SystemC建模与仿真概述261.3.1SoC设计流程1.3.2SystemC建模语言271.3.3SystemC模型29的离散事件模拟1.4 TLM-2.0 331.4.1TLM:通信层331.4.2TLM 34中的编码样式2并行SystemC仿真:挑战和现有解决方案2.1并行系统C-TLM仿真:问题陈述402.1.1SystemC加速策略402.1.2并行化SystemC 412.2现有方法442.2.1同步SystemC并行化472.2.2时间分离502.2.3Scale1.0:运行时进程交互监控3LT-TLM并行仿真的建议解决方案633.1概述643.1.1简化模型643.1.2一般执行流程653.1.3mem_instr大纲673.2第68阶段平行评估3.2.1零依赖性并行阶段68的优势3.2.2地址监控有限状态机(HSM)693.2.3存储器访问记录顺序741011内容3.2.4有效的FMS重置753.2.5可快速扩展的HSM存储773.3第79阶段的连续评价3.3.1选择顺序评估顺序803.3.2异步依赖关系分析............................................................................................813.3.3模拟回放853.3.4基于回滚的冲突恢复873.4扩展到任何共享资源944对拟议模拟技术的评价974.1实验设置和使用案例984.1.1主机984.1.2模拟架构994.1.3模拟软件1004.1.4度量和测量协议1024.2功能验证1044.2.1案例研究:基于Spinlock的屏障1044.2.2实验功能确认1084.3在标准和基于Linux的用例上的性能1094.3.1气压性能评估1094.3.2Linux性能评估1135全软件堆栈仿真挑战和解决方案1155.1导言1165.2研究基于Linux的基准测试模拟的性能。116 5.3快速顺序模式..................1195.3.1感兴趣的区域5.3.2可变精度1205.3.3动态调度策略1225.4基于CPU模式的取消调度..........................................................................................1235.4.1冲突研究1235.4.2按顺序执行操作系统内核代码5.5最终规模2.0绩效评估130结论135参考书目14313简介这份手稿介绍了我在法国萨克雷的原子能和替代能源委员会(CEA)攻读博士学位期间所做的工作论文。我是设计自动化架构实验室(LECA)的成员,一个在虚拟原型领域工作的实验室,也是克劳德·伯纳德·里昂大学并行计算实验室我的论文是我的研究生项目在我论文的第一个月里,我就这个主题进行了工作,并将开发的功能集成到了最终版本的工作中。芯片上的系统由于片上系统(SoC)的复杂性和上市时间的限制,电子系统级(ESL)设计和验证越来越具有挑战性。SoC是一种先进的电子元件,它将一个完整的计算系统集中在一个芯片上。SoC将出现在传统计算机不适用的所有地方,如实例、汽车、航空航天、智能手机、USB设备或物联网(IoT)设备。所有这些应用在功耗、面积、实时特性、效率、可靠性甚至电磁兼容性等方面都有很强的虽然常规计算机中央处理单元(CPU)由连接到外部主存储器和外围设备的一组相同的处理核心组成,但是SoC嵌入在单个芯片上, ARM Cortex A7和A15(采用大型小型架构)、内存、通信模块(例如,蓝牙、Wi-Fi和蜂窝网络)、加速器(例如,图形处理单元(GPU)和编解码器)或安全设备(例如,安全的生物识别。SoC架构的唯一限制是用于实现这些知识产权(IP)的制造过程以及硬件设计人员可以接受的复杂性。按照摩尔定律设定的路径,SoC的复杂性年复一年地达到前所未有的水平。随着数十亿个晶体管芯片集成到入门级设备中,新的设计技术必须帮助架构师掌握这种复杂程度。因此,14内容电子设计自动化(EDA)工具旨在使架构师能够充分利用制造技术的每一次飞跃所提供的新可能性。在这方面,抽象是战争的罪恶。SoC现在提供了可配置的IP,被视为黑盒,可以以最小的工作量进行大规模设计。这有助于显著缩短硬件设计周期。然而,硬件只是硬币的一面,软件在另一面。随着多核体系结构和硬件异构性的日益普及,软件复杂性的增长速度甚至超过了硬件复杂性,这给软件开发人员带来了新的挑战。此外,当功率和效率要求变得太高时,复杂性倾向于通过使用简单的硬件(如非一致缓存体系结构)而转移到软件因此,EDA工具还必须支持更快、更容易的软件开发工具。设计流程开发复杂的软件需要进行系统测试,这反过来又要求在其目标SoC上运行该软件。在开始软件开发之前等待经过验证的硬件可用不是一种选择,特别是考虑到硬件开发还利用了软件团队的反馈。因此,通过采用硬件和软件协同设计工作流程,这两个过程必须同时进行。该需求的行业标准解决方案是虚拟原型(VP)。它包括组装正在设计的SoC的软件模型,以构建可运行针对该SoC的软件的模拟器为了使此技术可行,VP必须满足以下要求:成本: 虚拟原型(VP)必须便宜且易于开发。速度:副总裁必须执行得足够快,以免减慢构建-测试-修复软件开发周期。准确性:副总裁必须提供软件开发人员在早期开发阶段所需的足够准确的信息。调试:副总裁必须提供有关正在开发的软件所导致的错误的有用信息。重复性: 错误通常需要具有可复制性才能有效修复。事务级建模(TLM)[Ayn09]标准是为了满足这些要求而开发的。它是基于C++的SystemC [IEE12]硬件描述语言(HDL)的一部分。 TLM首先实现了互操作性,允许独立参与者以易于使用的标准黑盒模型的形式提供其IP15内容集成到更大的VP中。在事务级模型中,仅对组件行为进行建模,而不是对寄存器传输级(RTL)模型进行建模,在该模型中还模拟组件内部。当涉及到开发成本和速度时,这种差异使TLM模型具有显著它还以适度但不可避免的准确性损失为代价急剧增加模拟速度(即,速度-准确性交易。除了将调试器连接到模拟处理器的可能性之外,所有常规的C++调试技术都可以应用于TLM模型模拟。最后,TLM仿真依赖于SystemC标准强制的协程语义,作为提供可重复性的最高HDL。尽管如此,最先进的仿真技术现在仍在努力跟上现代硬件的复杂性,仿真速度也在无情地趋于下降。这是由Ac-cellera [ScR]提供的标准SystemC模拟内核的直接结果,在一个计算能力不断提高的时代,越来越多的内核被集成到单个芯片中,仿真技术再也不能依靠单核性能的提高来跟上不断增加的SoC复杂性。稿件及手稿大纲本文解决了TLM模型的精确并行和符合标准的仿真特别是,并行仿真不能放弃协程语义,因为它会带来更难的建模和潜在的不可重复的bug。本文特别关注一种特定类型的TLM模型:松散定时模型。与其他类型的SystemC模型(RTL或甚至近似定时TLM模型)相比,这些模型是最抽象的,但也是最快的,大约有两个量级。LT-TLM模型在并行模拟方面尤其具有挑战性,这是这项工作努力要实现的。我们提出了SCAle 2.0,一个符合标准的并行SystemC内核,它保证了协程语义的保存和模拟的可重复性。此工作在Scale1.0 [VS16]之后开始 我们支持任何TLM模型,包括使用直接存储器接口(DMI)协议的松散定时编码风格。 我们基于轻量级共享资源访问监控的技术即使与最快的指令集模拟器(ISS)一起使用,开销也是有限的。第1章奠定了理解当前工作所需的基础:并发和并行概念、并行编程挑战和SystemC模拟原则。第2章讨论了并行SystemC仿真的挑战和文献中描述的现有解决方案特别是Scale1.0,本章将详细介绍本工作的起点。内容16第3章介绍了Scale2.0中实现的核心机制,该机制已在[BSV+ 20]的ASP-DAC 2020会议上发布。这些机制包括:基于轻量级FMS的共享资源访问授予策略,可在并行评估期间防止大多数进程原子性违规;用于FMC实例存储的快速且高度可扩展的数据结构;用于从进程原子性违规中恢复的通用进程级回滚系统;以及用于错误再现的确定性模拟重放机制。第4章描述了实验设置,包括主机平台、仿真平台、功能验证基准和性能基准。在36核主机上显示出非常好的可扩展性,但在这一点上,基于Linux的基准测试没有得到有效支持。因此,第5章进一步分析了复杂客户机操作系统仿真所带来的挑战,并介绍了其他解决方案,包括:用于快速转发仿真的可变精度系统与自适应并行/顺序评估相结合;基于模拟CPU模式的过程调度算法,用于在给出最终实验结果之前改进冲突避免。本章中介绍的解决方案和结果已提交给ASP-DAC 2020期刊,并正在进行二次审查。17第一章并行计算和SystemC仿真背景1.1导言181.2竞争与平行181.2.1竞争181.2.2使用Coroutines 19对并发进行细粒度控制1.2.3平行性211.2.4使用线程实现并行计算1.3SystemC建模与仿真概述261.3.1SoC设计流程1.3.2SystemC建模语言271.3.3SystemC模型29的离散事件模拟1.4 TLM-2.0 331.4.1TLM:通信层331.4.2TLM 34中的编码样式并行计算和SystemC仿真背景181.1简介在本章中,阐述了理解手稿其余部分所需的概念。主要目的是说明这些概念,并帮助建立对它们的直觉本章并不是对这些主题的详尽阅读,而是试图尽可能地隐藏这些主题某些方面的复杂性。首先,解释了本文中使用的竞争和平行性的一般概念:它们是什么,它们的相似之处是什么,但最重要的是,是什么使它们不同,经常不相容?首先使用算法方法来介绍这些概念,然后介绍在编程实际应用时如何使用它们。然后,通过激发其使用的工业需求引入SystemC HDL接下来,SystemC的基本原理通过一个简单的RTL用例公开。模块、端口、通道、进程和内核模拟在此结束。最后,TLM抽象级别(本工作的目标)被很好地解释为DMI和全局量子,这是我们努力用并行SystemC模拟内核支持的两种标准加速1.2竞争与平行竞争和平行主义是两个密切相关但又截然不同的概念。本节旨在对它们进行定义和区分,以更好地理解标准SystemC机制和本文的贡献:SystemC并行。应注意的是,本节不使用SystemC特定概念1.2.1竞争在本节中,我们将进程1定义为正在执行的一系列相关指令。在计算机科学的上下文中,过程包括处理器获取和执行编码指令(例如, x86或ARMv 8 [Int 19; ARM20])位于内存中,以执行相应的寄存器操作和内存访问。通常假定进程是孤立执行的,即不与其他进程交互因此,当进程多次读取给定的内存位置而不对其进行写入时,它可能期望一次又一次地读取相同的值。相反,如果过程不是孤立运行,则会发生意外的状态突变(例如,注册表内容修改)可能会影响进程的有效性。当多个进程同时运行时,也就是说,如果它们同时进行,则会出现这样一种情况,即不再有进程处于隔离状态。形式上,当进程A(分别是进程B)在时间间隔TA(分别是TB)期间执行时,则A和B是并发的,并且仅当TA≤TB/=λ时。我不特别,如果你是1在本节中,进程不用于SystemC进程的含义。并行计算和SystemC仿真背景19进程A和B同时运行,这并不意味着进程A和B在任何时候都在同时进行。因此,可以通过多路复用进程在单核处理器上实现并发,多路复用进程是通过在短时间内交替运行多个进程来实现的。在实践中,在传统计算机系统中的许多地方都可以观察到并发。在操作系统(OS)级别,数千个进程可以同时共存。操作系统的主要角色之一是使所有这些进程彼此隔离,同时尽可能公平地共享可用处理时间。 在程序级别,开发人员可以利用其系统和语言的并发能力来简单地控制依赖于多个调用堆栈的流,如第1.2.2节所述。 在硬件级别,多个处理单元可以同时运行多个进程,甚至可以同时运行,如第1.2.3节所述。1.2.2对与协程的并发进行细粒度控制可以使用协程在程序级别利用和控制并发,以实现简单的协作多任务处理。协程是一个独立的控制流(即执行堆栈),由应用程序程序员汇总和暂停。在每个线程中,这些控制流在被程序员暂停和求和时一次处于活动状态。当协程暂停自身时,它被说成是成功的。协程实际上允许一个程序由多个任务组成,这些任务以合作的方式相互交互,也就是说,所有任务都知道彼此在做什么以及何时做。因为协程有它自己的调用堆栈,这是它自己的执行上下文,所以术语上下文和协程经常可以被替换。算法1和算法2描述了斐波纳奇序列生成的两种不同实现。我们的目标是一次生成斐波那契数列一的数字,并在生成下一个值之前打印每个值:值不能存储在一个数组中,直到所有值都一次打印出来,这是值生成和打印必须同时发生的事情。我们还假设斐波纳奇序列生成器是由外部源提供的,这意味着打印不能插入到斐波纳奇生成函数的中间。这种看似人为的限制代表了典型的SystemC用例:由各种供应商作为黑盒提供并由终端用户组装在一起的几个复杂的IP模型。在算法1中,生成器是一个经典函数,它返回一个值,并且不接受任何参数。这意味着需要一种特殊的机制来记住最后计算的值,以便不返回相同的值。这里,斐波那契数列的两个值被存储,而不是一个值,以加快下一个值的计算。然后,打印函数负责打印生成器返回的连续值
下载后可阅读完整内容,剩余1页未读,立即下载
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)