- 博客(19)
- 收藏
- 关注
原创 图卷积神经网络模型----GCN
一、傅里叶变换与拉普拉斯变换 傅里叶变换是一种线性的积分变换,这种变换是从时间转换为频率的变换或其相互转换。(原因:我们将信号分解为频域里各种不同频率的信号,又由于频域分析具有很多时域所不具有的特点,故可以比较方便的对原信号进行分析。) 参考:https://zhuanlan.zhihu.com/p/41455378 时域中的信号,我们可以构造一个三角函数之和: 其中傅里叶级数如下图所示: 其中=又称为...
2020-08-30 22:46:43 2199
翻译 Tight WCRT Analysis of Synchronous C Programs
1.简介在过去的十年中,无处不在的嵌入式系统引起了研究人员的注意。典型的嵌入式应用,从复杂的飞机飞行控制器到简单的数码相机,都需要对它们的定时性能做出最坏的保证,因此被称为实时系统。实时系统设计的标准方法依赖于静态地确定代码的执行时间,这个过程称为最坏情况执行时间(WCET)分析[22]。WCET分析用于确定任务周期和最后期限。然后使用RTOS模拟任务的并发性,并使用互斥锁和监视器等机制实...
2019-10-31 21:25:43 902
翻译 Predictable Programming on a Precision Timed Architecture
1.简介我们相信实时嵌入式软件的解决方案是对处理器架构的重新思考。正如在其他[9]中所讨论的,现在是时候考虑那些提供与功能一样可预测定时的架构了。在本文中,我们提出了这样一个精确定时(PRET)架构的具体示例:一个基于SPARC指令集架构(ISA)的多线程处理器,它提供可预测的定时以及可预测的功能和性能。下面,我们使用SystemC[23]和一个在其上运行的应用程序来演示软件如何利用PRE...
2019-10-29 22:04:25 461
原创 同步语义
摘自:The Synchronous Langages 12 Years Later简介1991年,《IEEE论文集》专门对同步语言[1]、[2]进行了专门的讨论。其中包括描述三种法国同步语言Esterel[3]、Lustre[4]和Signal[5]的论文,这也是本文的主题。当时,这三种语言已经有了很好的定义,并在工业上得到了一些应用,但仍处于开发阶段。在此期间,这些语言得到了改进,...
2019-10-28 15:56:55 1193
原创 harper_book_Chapter_4---静态
前言大多数编程语言在处理的静态和动态阶段之间表现出阶段差异。静态阶段包括解析和类型检查,以确保程序是格式良好的;动态阶段包括执行格式良好的程序。当格式良好的程序在执行时表现良好时,这种语言就是安全的。静态阶段由一组规则组成的静态图表来指定,这些规则用于派生类型判断,这些判断表明表达式是某种类型的格式良好的表达式。类型通过“预测”部分的执行行为的某些方面来调节程序的组成部分之间的交互,这...
2019-10-22 20:43:48 245
翻译 PRET-C:一种用于精确定时架构的编程新语言
1.摘要精确定时架构(PRET)是最近提出的一种设计实时嵌入式系统处理器的方案。这些处理器必须在不牺牲吞吐量的情况下保证应用程序的精确最坏情况反应时间(WCRT),并且必须允许程序的WCRT的计算既简单又有效。本文的目的是提出一种新的基于同步语言的PRET-C,用于编写编译器。PRET-C支持同步并发、抢占和逻辑时间的高级构造。与现有的同步语言相比,PRET-C在并发线程之间提供了基于C的...
2019-10-22 09:23:56 1863
原创 harper_book_Chapter_2---归纳定义
归纳定义是学习编程语言不可缺少的工具。在这一章中,我们将发展归纳定义的基本框架,并给出一些使用它们的例子。归纳定义由一组规则组成,用于派生各种形式的判断或断言。判断是关于一个或多个某种抽象绑定树的语句。这些规则规定了判断有效的必要和充分条件,从而充分确定了判断的意义。2.1. 判断我们从抽象绑定树的判断或断言的概念开始。我们将使用许多形式的判断,包括这些例子: ...
2019-10-18 14:54:15 377
原创 语法制导翻译----构造抽象语法树(S属性和L属性)
1.语法制导定义语法制导定义是一个上下文无关文法和属性及规则的结合。属性和文法符号相关联,而规则和产生式相关联。如果X是一个符号而a是X的一个属性,那么我们用X.a来表示在某个标号为X的分析树结点的值。2.继承属性和综合属性1).综合属性:在分析树结点N上的非终结符号A的综合属性是由N上的产生式所关联的语义规则来定义的。请注意,这个产生式的头一定是A。结点N上的综合属性只能通过...
2019-09-06 16:01:37 7780
原创 LLVM Chapter 3: Tools and Design and build your first LLVM project
前言 在熟悉LLVM的编译以后,我们将从以下几个方面对LLVM进行深入的探究:LLVM核心库基本设计原则 编译器驱动程序如何工作 LLVM驱动程序的交互 独立组件的应用 了解LLVM基本库 介绍LLVM中的C++实践 编写第一个LLVM项目1.LLVM基本设计原则LLVM设计的一个核心方面是IR(SSA:单静态赋值),具有如下两个特征: ...
2019-09-05 21:41:00 411
翻译 硬实时系统的语言构造和转换----普渡大学
本文翻译来源于: Language Constructs and Transformation for Hard Real-time Systems Tai M. Chung...
2019-08-26 21:54:14 339
原创 语法分析--FIRST,FOLLOW集和LL(1)文法
1.前言自顶向下和自底向上语法分析器的构造可以使用和文法G相关的两个函数FIRST和FOLLOW来实现。在自顶向下语法分析过程中,FIRST和FOLLOW使得我们可以根据下一个输入符号来选择应用哪个产生式。在恐慌模式的错误恢复中,由FOLLOW产生的词法单元集合可以作为同步词法单元。2.FIRST和FOLLOW集计算各个文法符号X的FIRST(X)时,不断的应用下面的规则,知道...
2019-08-20 12:59:23 2985
原创 Kaleidoscope: Adding JIT and Optimizer Support
4.1 Chapter 4 Introduction 欢迎来到“用LLVM实现语言”教程的第4章。第1-3章描述了一种简单语言的实现,并添加了对生成LLVM IR的支持。本章描述了两种新技术:向语言添加优化器支持和添加JIT编译器支持。这些新增内容将演示如何为万花筒语言获得良好、高效的代码。4.2 Trivial Constant Folding 我们对第3章...
2019-08-05 11:25:35 586 1
原创 Kaleidoscope: Code generation to LLVM IR
3.1 Chapter 3 Introduction 欢迎来到“用LLVM实现语言”教程的第3章。本章将向您展示如何将第2章中构建的抽象语法树转换为LLVM IR。这将教会您一点关于LLVM如何工作的知识,并演示如何使用它。构建lexer和解析器要比生成LLVM IR代码复杂得多。 请注意:本章及以后的代码需要LLVM 3.7或更高版本。LLVM 3.6和befor...
2019-08-01 20:06:35 406
原创 五.为CPU0体系结构创建LLVM后端(4)
1.DAG(Directed Acyclic Graph)许多重要的局部优化技术都是从将基本块转换为DAG[15]开始的。例如,基本的代码块,对应的DAG如图9所示。 如果b不在块退出时活动,那么我们可以执行“common expression remove”,如下表所示。删除b后,从底部到顶部遍历DAGs(按深度优先顺序搜索...
2019-07-18 09:50:43 441
原创 四.为CPU0体系结构创建LLVM后端(3)
1.SSA表单 SSA表单表示每个变量只分配一次。LLVM IR是一个SSA表单,它具有无界的虚拟寄存器(每个变量只分配一次,并保存在不同的虚拟寄存器中)。因此,代码生成序列中所使用的优化步骤,包括指令选择、调度、形成和寄存器分配等阶段,不会失去任何优化机会。例如,如果使用有限的虚拟寄存器而不是无限制的代码, %a = add nsw i32 1...
2019-07-15 16:56:28 257
原创 三.为CPU0体系结构创建LLVM后端(2)
本文上接:为CPU0体系结构创建LLVM后端(1)LLVM的目标描述文件:.td “混合和匹配”方法允许目标作者选择对其体系结构有意义的内容,并允许跨不同目标重用大量代码。这带来了另一个挑战:每个共享组件都需要能够以通用的方式推断出目标特定的属性。例如,共享寄存器分配器需要知道每个目标的寄存器文件,以及指令与其寄存器操作数之间存在的约束。LLVM对此的解决方案是为每个目标提供一...
2019-07-14 20:30:12 573
原创 二.为CPU0体系结构创建LLVM后端(1)
一.CPU0简短介绍1.Cpu0是一个32位架构。它有16个通用寄存器(R0,…、协处理器寄存器(如Mips)和其他特殊寄存器。其结构如图1所示。 图一:Cpu0处理器的架构框图2.CPU0架构寄存器介绍:3.CPU0指令集如下图:...
2019-07-13 10:17:08 631
原创 一.LLVM基础库初探
LLVM和Clang被精心组织成如下库:1.libLLVMCore:它包含了与LLVM IR相关的逻辑:IR构造(数据布局,指令,基础块和函数)和IR验证器。它还提供了pass管理器。2.libLLVMAnalysis:将多个IR分析步骤进行分组,如别名分析、依赖关系分析、常数折叠、循环信息、内存依赖关系分析和指令简化。3.libLLVMCodeGen:这实现了与目标无关的代码生...
2019-06-06 15:18:33 1291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人