前言 作者身处甲方公司,有幸近两次参与到攻防演练行动当中,在这两次行动中也帮助公司逐步建立起来了一套SOC平台,完成对接了NGFW、IDS、APT、WAF、终端安全等安全设备并投入运营,运营过程中发现一个痛点没有得到很好的解决 在演练期间,公司领导每天会抽出5分钟时间听防守小组汇报,SOC平台所能展示的内容过于复杂与专业,不能很好地表达与反应当日的安全攻击态势,于是诞生出这个造轮子的想法。 简介 SOC Sankey Generator是一款从SOC日志中进行数据ETL与数据可视化的工具,可以快速将日志呈现为Sankey图,Sankey图常常应用于具有数据流向关系的可视化分析,在安全中适合描述源对目标发起了何种攻击事件 欢迎各位Star,Fork、Issue、PR(GitHub:https://github.com/LennyLeng/SOC_Sankey_Generator) 环境&依赖 python3 pandas
简介 已经有很长一段时间不做 SoC Integration 方面的工作了,这篇是芯片 IO 相关的一些设计经验总结,主要是方便自己将来重新拾起,同时也希望能和大家分享、讨论和学习。 这项工作不是从头去设计一个IO或者PAD的电路结构,做 SoC 的 Design House 一般都是在 SoC 芯片中例化现成的 IO cell 和 PAD,这些 cell 一般是由 foundry
用“麻雀虽小五脏俱全”来形容SoC,再确切不过了。SoC是模仿计算机系统,微缩成了一个微系统。 在我接触过的SOC芯片中,硬件的大概的组成是:核心(core),存储,外设接口(高速外设和低速外设),总线,中断模块,时钟模块等。在验证阶段,这些都是用verilog代码实现的,你是看不到实体的。 SOC是一个整体的概念,再细化一下,便到了每个模块。在一个SOC成型之前,设计工程师用verilog代码把每个模块敲出了,粗略进行模块级的验证,在模块级验证通过之后,会通过总线把各个模块集成在一起。 国内很多公司的“葫芦娃”并不是自己“长”的,都是从国内外一下专门做IP的公司买的IP,也就是模块,然后把这些IP,集成到一起,组把“葫芦娃”都挂在藤上,成一个SOC芯片。 当然,并不是所有的模块都是买,也有一些小的模块是可以自己写的。 看到这里,不知道你对SOC的概念,有没有多一点理解,希望对你有帮助,如果对你有帮助,麻烦点个赞。我是不二鱼,欢迎关注我。
当然,作为整体的芯片功耗,还得包括各种加速器和接口,尤其是会被用到的模块。 在设计SoC的时候,性能,功耗和价格就转换成了PPA。啥是PPA?其实就是性能,功耗和面积。其中,性能有两层含义。 如果上面一段看完你没什么感觉,那我可以换个说法:对于没有完整支持stashing的ARM SoC,哪怕处理器跑在10Ghz,网络加速器性能强的翻天,基于DPDK的简单包转发(快于Linux内核网络协议栈转发几十倍 因此,切记,弱壁垒只能保证你给出的指令次序,并不能保证在它们之间没有别的模块去访问内存,哪怕这个模块来自于同一个核。 还有,在SoC系统上,对有些设备模块进行DMA时,如果不是缓存行对齐,那么可能每32字节都会被拆成2段分别做DMA,这个效率就要差了1倍了。 如果使用了带ecc的内存,那么更需要ddr带宽对齐了。 我们买内存的时候,有3个性能参数,比如10-10-10。这个表示访问一个地址所需要的三个操作时间,行选通,数据延迟还有预充电。
欢迎大家加入2022届数字IC交流群,QQ群号 1060380138 做过SoC的同学们基本都会接触到一个词,tradeoff。什么是tradeoff呢?为什么要tradeoff? 只要是做SoC设计就离不开这三个概念。首先,性能不用讲大家都明白。我们经常会看到关于性能的宣传,比如某新发布的手机跑分多少多少,比如某款CPU芯片的最高主频等等。 对于大规模的SoC,这时候就需要架构工程师统筹考虑三个指标,在PPA三项指标间做出权衡。是用功耗换性能,还是用面积换性能,抑或是在满足基本性能的前提下大力优化功耗或者面积。 就像某水果公司的SoC,有钱任性,其L3 cache做的不小,哈哈。 最后总结一下,芯片设计中PPA既是对立的,又是统一的,其矛盾贯穿SoC设计始终。没有完美的芯片,只有完美的tradeoff。 END
安装方法:pip3 install pywifi 安装位置:/usr/local/lib/python3.5/dist-packages/pywifi注意事项:用root账户执行程序,否则会提示PermissionError: [Errno 13] Permission denied: '/var/run/wpa_supplicant'
是一个 Apache 的模块,用来限制每个 IP 的并发连接数。 website : http://www.burlaca.com/2009/02/alivelog/ 4.负载均衡模块 mod_backhand 是 一个Apache 的负载平衡模块 。 压缩模块 mod-gzip-disk 是一个使用磁盘进行存储预压缩页面的 Apache 模块,与 mod-gzip 不同的是不需要每次请求的时候重新压缩。 Apache 模块。 10.CGI V8 引擎包 v8cgi 是一个很小的 C ++ 和 JS 文件集合,允许开发者在服务器端使用 JS 的模块,基本功能包括:IO, GD, MySQL, Sockets, templates
SoC功能验证的挑战 系统复杂性提高增加验证难度 设计层次提高增加了验证工作量 发展趋势 2.功能验证方法与验证规划 仿真为基本出发点的功能验证方法 功能验证开发流程制订验证计划 功能验证需求 协议验证 根据总线协议对各个模块的接口部分进行验证 系统级的测试平台 边界条件 设计的不连续处 出错的条件 极限情况 系统级的测试平台标准 性能指标 覆盖率指标 4.仿真验证自动化 激励的生成 目前,SoC设计中常用的静态形式验证方法是相等性检查。 半形式验证是一种混合了仿真技术与形式验证技术的方法。常用的半形式验证是混合属性检查或模型检查,它将形式验证的完整性与仿真的速度、灵活性相结合。
学习 Spring Boot 必须得了解它的核心模块,和 Spring 框架一样,Spring Boot 也是一个庞大的项目,也是由许多核心子模块组成的。 下面我们大概来了解一下 Spring Boot 的核心模块。 1、spring-boot 这是 Spring Boot 的主模块,也是支持其他模块的核心模块,主要包含以下几点: 1) 提供了一个启动 Spring 应用的主类,并提供了一个相当方便的静态方法,它的主要是作用是负责创建和刷新 10、spring-boot-devtools 开发者工具模块,主要为 Spring Boot 开发阶段提供一些特性,如修改了代码自动重启应用等。 这个模块的功能是可选的,只限于本地开发阶段,当打成整包运行时这些功能会被禁用。 大概的核心模块就是这些,里面更多的细节请阅读后续的更多文章。
接下来,再安装tesserocr即可,此时直接使用pip安装: pip install tesserocr pillow Windows10cmd执行完命令之后会出现如图所示的错误。 ?
---- 模块化程序设计 Python系列文章目录 前言 一、什么是模块 模块和包 命名规范 标准库模块 模块化编程 背景 流程 创建和测试 模块文档字符串&API设计 二、模块的导入 import # 导入一个模块 import 模块1,模块2… # 导入多个模块 import 模块名 as 模块别名 # 导入模块并使用新名字 import 加载的模块分为四种类型: 使用python编写的代码 print(com.time.pause.capture2.module.a.aa.module_AA.add(10, 20)) # 方式二: 按包路径导入模块 from com.time.pause.capture2 .module.a.aa import module_AA print(module_AA.add(10, 20)) # 方式三: 按照模块路径导入指定类or方法 from com.time.pause.capture2 .module.a.aa.module_AA import add add(10, 20) import com.time.pause.capture2.module.a 导入包的本质 其实是“导入了包的
学习 Spring Boot 必须得了解它的核心模块,和 Spring 框架一样,Spring Boot 也是一个庞大的项目,也是由许多核心子模块组成的。 Spring Boot 的核心模块 下面我们大概来了解一下 Spring Boot 的核心模块。 1、spring-boot 这是 Spring Boot 的主模块,也是支持其他模块的核心模块,主要包含以下几点: 1) 提供了一个启动 Spring 应用的主类,并提供了一个相当方便的静态方法,它的主要是作用是负责创建和刷新 这个模块提供了像健康端点、环境端点、Spring Bean端点等。 10、spring-boot-devtools 开发者工具模块,主要为 Spring Boot 开发阶段提供一些特性,如修改了代码自动重启应用等。
而SoC则将这些功能模块全部集成到一颗芯片内部,大大减少了PCB板的面积、降低了功耗,同时也提升了系统的可靠性。 1.2.4 互连总线 负责连接SoC内部各个模块,常见的有AHB、APB、AXI等总线协议。 常用的低功耗技术包括: 多电压域设计:将SoC划分为多个电压域,不同的模块使用不同的供电电压 动态电压频率调节(DVFS):根据负载动态调整工作电压和频率 时钟门控:在模块空闲时关闭时钟,减少动态功耗 这颗由乐鑫科技设计的SoC集成了双核处理器、WiFi和蓝牙模块,价格却非常亲民,成为了IoT设备的首选方案。 4.2 SoC开发的最佳实践 4.2.1 充分利用硬件加速 现代SoC集成了很多硬件加速模块,如DMA、硬件CRC、加密引擎等。 充分利用这些硬件资源可以大大提升性能、降低CPU负载。
接下来从功耗构成的角度,我们来看有哪些和SoC设计相关的提示。 首先是 ,可以在满足功能的前提下尽量降低供电电压值,这里面包含的技术有多电压域(multi voltage domain)设计,比如内部模块工作在低电压域,与IO相关的模块工作在高电压域;多电源域(multi 输入向量控制就是当芯片/模块置于休眠模式时,通过一组输入使芯片/模块的泄漏最小。这些输入向量可以通过寄存器上的置位/复位输入端或通过扫描链加入(听起来是不是有点丧心病狂的感觉!。 上面讲的都是从功耗构成角度考虑,我们也可以结合SoC设计流程来看看在SoC设计的各个阶段都能做些什么来降低功耗。毕竟低功耗的设计贯穿了SoC设计的整个流程。 总结一下,SoC的低功耗设计方法有很多,具体还要结合项目本身的实际情况来定。正如前一篇所讲,在芯片设计的世界里没有完美的技术,只有完美的tradeoff。 END
for i in zip([1, 2, 3], ['a', 'b', 'c']): print(i) zip() 和本模块中的其他函数一样,返回一个可迭代的对象,每次迭代产生一个值。 :') for i in islice(range(100), 5, 10): print(i, end=' ') print() print('By tens to 100:') for i in islice(range(100), 0, 100, 10): print(i, end=' ') print() islice() 接收和列表切片相同的参数:start , stop # OutPut Stop at 5: 0 1 2 3 4 Start at 5, Stop at 10: 5 6 7 8 9 By tens to 100: 0 10 20 30 40 50 60 zip(count(start, step), ['a', 'b', 'c']): print('{}: {}'.format(*i)) 本例中,起始点和步长来自 Fraction (分数)模块的
这些技术创新中最具突破性的创新之一是System-on-a-Chip(SoC)。要充分掌握SoC发展的意义,必须探索其起源、演变及其对当今科技格局的影响。 SoC 技术趋势 与任何处于创新前沿的技术一样,SoC 正在经历一系列演进步骤,每个步骤都增强了其功能并为科技行业设定了新标准。 基于 SoC 的能效和绿色计算 自适应电压调节:通过允许 SoC 根据计算需求动态调整其电压,可以显著降低功耗。 SoC 的最新研究与研究 工艺进步:预计 SoC 将变得更加强大和高效。半导体工艺的进步,包括更小的工艺节点和改进的电源管理,将提高SoC的性能。 安全性:随着 SoC 在关键领域找到应用,确保芯片级安全性免受物理和数字攻击至关重要。 哪些行业可以使用 SoC?
2.概要设计: 如果非系统的概要级描述, 从技术角度来看,我们采用插件方式组织模块,从业务上来讲,SQL注入和PHP注入的关联性是不大的,我们采用插件的方式也是为了解开模块间的耦合关系。 0x05 模块单体设计 1.单体设计: 模块对象接口设计:为了使用类工厂集中调度模块,我们预定了插件模块必须要有接口函数。 ? 被威胁IP的top10、被攻击总数top10、威胁聚合分布。 实时报告:提供实时查询接口,直接给出ClickHouse威胁情报的聚合信息,实时查询挂在墙上。 0x07 总结 目前我们把一个基于开源技术的微型日志威胁分析系统介绍完了,并没给出更具体的实现代码,更多的为基础部署架构和设计方式提代了一个思路,具体到包括单体接口实现的约定,理想状态下,按照这种模式写出的模块的大同小异
SoC 中不断添加处理核心,但它们不会都得到充分利用,因为真正的瓶颈没有得到解决。 SoC 需要处理的数据量激增,虽然处理核心本身可以处理这些数据,但内存和通信带宽成为瓶颈。
用FPGA创建SoC如此容易 项目地址 ❝https://github.com/enjoy-digital/litex/wiki LiteX 框架为创建 FPGA 内核/SoC、探索各种数字设计架构和创建完整的基于 简介 LiteX 提供了轻松创建 FPGA 内核/SoC 所需的所有常用组件: 总线(Wishbone、AXI、Avalon-ST)及其互连。 通过将 LiteX 与内核生态系统相结合,创建复杂的 SoC 变得比使用传统方法容易得多,同时提供更好的可移植性和灵活性:例如,基于 VexRiscv-SMP CPU、LiteDRAM、LiteSATA 构建的多核 Linux SoC与 LiteX 集成,在廉价的改造Acorn CLE215+ Mining Board上运行: 支持的硬件 ❝https://github.com/litex-hub/ 安装 RISC-V 工具链(仅当您想使用 CPU 测试/创建 SoC 时): pip3 install meson ninja .
所以 SOC的顶层,如果用数字仿真器,也是因为它快。 2.模拟仿真器 需要解决模拟大环境、大矩阵( System Matrix),而且要在仿真的每一步都站在全局的角度,看各种需求是否被满足。 这样速度比原来Spice快上几十倍,而精度差别在Spice的5%-10%之内。 在数模混仿工具上的顺序是: 1)运行所有离散的初始化 2)在零时刻执行所有离散initial模块 3)在零时刻执行所有离散always模块 4)模拟迭代得到所有电压电流结果 B、Trans工作点分析 模拟部分从 图10 不同建模类型的速度精度对比图 上述Model做减法(VerilogA、VerilogAMS、RVM、Verilog和Reference Model),一步步脱离Analog,一步步走进Digital ADV第二十三讲 “SOC TOP设计与仿真”,陈俊晓