Rocket - util - Counters】的更多相关文章

https://mp.weixin.qq.com/s/q7R2Dn9p9cch_ABN4raReQ   介绍几种计数器的实现,以及其中的一点小细节.   ​​   1. ZCounter   ​​   a. value初始值为0: b. 使用inc构建递增计数逻辑: c. wrap: 如果value增加到n-1,则返回从0开始重新计数:如果n是2的幂,则不需要判断,一直加1即可.   创建ZCounter类的实例,只是创建了一个value寄存器: ​​   在调用其inc()方法时,才会生成计数…
https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg   介绍util中定义的注解(Annotations).   ​​   1. Annotation   注解提供一些信息,供后续阶段使用. 之前在使用chisel生成verilog的时候,会同时生成后缀为".anno.json"的文件,里面存放的即是注释信息.   2. SRAMAnnotation   ​​ 注释SRAM的信息,包括:地址宽度.名称.数据宽度.深度.描述信息.写掩码颗粒…
https://mp.weixin.qq.com/s/Z4JJhZ_jL1lqF1nf_orq9A   简单介绍Timer的实现.   ​​   1. 基本功能   实现定时器的功能.   2. Timer   实现一个静态装入的定时器: ​​ 1) initCount   定时器的初始值,静态配置,不可动态改变.   2) maxInfligh   定时器事件的种类.   3) io   ​​ a. start:某个定时器事件需要启动定时器,io.start.bits为这个定时器事件的ID:…
https://mp.weixin.qq.com/s/zCP7wPuxgQ-r94Tr6BV5iw   简单介绍Replacement的实现.   ​​   1. 基本介绍   用于实现Cache替换相关的功能. ​​ From: Cache Replacement Policies, Prof. Mikko H. Lipasti, University of Wisconsin-Madison, ECE/CS 752 Spring 2016   2. ReplacementPolicy   代…
https://mp.weixin.qq.com/s/gbR5fuDbE_nUFVxw-p4rsA   简单介绍ReduceOthers的实现.   ​​   1. 基本介绍   输入一组Bool元素,把其他位置元素逐个相与的结果,作为当前位置的值输出.   2. helper   helper实现ReduceOthers的核心功能: ​​   1) 输入参数   x是输入的一组Bool类型的元素.   2) 返回值   返回一个元组:(Seq[Bool], Bool) a. Seq[Bool]…
https://mp.weixin.qq.com/s/xyEq3DgYuf2QuNjssv8pkA   简单介绍Repeater的实现.   ​​   1. 基本功能   A Repeater passes it's input to it's output, unless repeat is asserted. When repeat is asserted, the Repeater copies the input and repeats it next cycle.   2. 实现  …
https://mp.weixin.qq.com/s/G2vLP-ncoJzSOgxGGEJkfA   简单介绍PrefixSum的实现.   ​​   1. 基本介绍   ​​ 把一个序列从前向后逐个执行迭代(assocOp),每针对一个元素执行一遍迭代,针对一整行执行一次迭代(layerOp).   2. PrefixSum   ​​ a. layers:抽象方法,返回层数,等于layerOp执行的次数: b. idLayer: 默认的layerOp,即没有动作,把输入原样返回:   3.…
https://mp.weixin.qq.com/s/CUnrpyQN5LRBR5bxC5u86A   简单介绍MultiWidthFifo的实现.   ​​   1. 基本介绍   实现一个输入宽度为inW,输出宽度为outW,可存n个outW宽度元素的FIFO. a. 如果inW == outW,直接使用队列(Queue)实现: b. 如果inW > outW,则相当于每次输入多个元素,而输出只能有一个元素: c. 如果inW < outW,则相当于每次输出多个元素,而输入只能有一个元素:…
https://mp.weixin.qq.com/s/_aJqf1cFJDK5RVRBhxTWOw   介绍MaskGen的实现.   ​​   1. 基本介绍   给定总线宽度beatBytes,根据访问的地址(address)和访问的字节数(bytes = 2^lgSize),生成访问字节的掩码.   2. 实现   思路不复杂,写法很难懂.重构一下,提高可读性.   1) 首先忽略groupBy,清爽很多: ​​   2) 把addr_lo重命名为address,把lgSize重命名为si…
https://mp.weixin.qq.com/s/kf4FvAFye_bRdT49Yow7Hg   简单介绍Misc中各个辅助方法的用途和实现.   ​​   1. ParameterizedBundle   ​​ 包含一个隐式参数的Bundle.   2. DecoupledHelper   ​​ rvs:Ready/Valid们. a. fire():返回一个rvs是否全部为真的判断: b. fire(exclude, includes):从rvs中临时排除一个exclude,在临时增加…
https://mp.weixin.qq.com/s/yO_9Ec3S5-AosRVLpsBgOg   简单介绍基于通道位置的队列(LanePositionedQueue)的实现.   ​​   1. LanePositionedDecoupledIO   ​​ 包含多个lane的ReadyValid接口,其中: a. maxVliad & maxReady:valid和ready信号的数量: b. validBits1 & readyBits1:表示valid和ready的数量所需要的比…
https://mp.weixin.qq.com/s/Pe7FGKzfRufzzYDrl0fQ7g   介绍IDPool的实现.   ​​   1. 基本介绍   实现从ID池中分配和释放ID的功能.   2. 实现   1) numIds & idWidth   ​​ numIds为ID池中ID的个数:idWidth为表示这么多ID所需要的比特数:   2) io   ​​ alloc为从ID池中分配一个ID时所使用的接口,io.alloc.bits为返回的ID号: free为从ID池中释放一…
https://mp.weixin.qq.com/s/5hNM4yeQjaLvAJzgMG9PGQ   介绍HeterogeneousBag的实现.   ​​   1. 基本介绍   一个口袋(bag),把元素们(elts)装进去.   2. 实现   a. apply(x):取第x个元素: b. length:元素的个数: c. elements:把elts转换为(序号.元素)对: d. cloneType:克隆出来的为this.type,即HeterogeneousBag子类的类型: e.…
https://mp.weixin.qq.com/s/vf0PfjbxQ3Ywjk6tk85SfA   介绍GenericParameterizedBundle的实现.   ​​   1. 基本介绍   a. Bundle:继承自Bundle,自定义的数据类型: a. 参数化:类型化的参数为T params: b. 通用的:cloneType返回的this.type为子类的类型:   2. 实现   覆盖了一个cloneType()方法.该方法的实现如下: a. 获取当前对象的类:this.ge…
https://mp.weixin.qq.com/s/QoP9Gbm9hUQ4xsjJQ0pZ1Q   简单介绍Frequency的实现.   ​​   一个实例: ​​     1. 基本介绍   每一个时钟周期,随机从列表(dist)中选择一个输出.   要求条件: a. 列表dist不为空: b. dist中freq的总和为2的幂: ​​   2. 实现   a. 生成一个随机数   ​​   b. 生成if()语句   ​​ ​​   if (randVal < firstFreq) {…
https://mp.weixin.qq.com/s/yato1PrnHe517J8twgZFOg   介绍ECC(Error Correcting Code/Error Checking and Correcting)的实现框架.不涉及编码的具体实现细节.   ​​   1. 码:Code   ​​ 所有编码(如奇偶校验码.海明码)的抽象父类.   包含如下几个方面: a. 能否检错:canDetect: b. 能否纠错:canCorrect: c. width():输入为数据的宽度,输出为编…
https://mp.weixin.qq.com/s/ohBVNAXZUA538qSxfBGMKA   简单介绍Broadcaster的实现.   ​​   1. Broadcaster   广播即是把输入口的输入转发到每个输出口输出.   Takes in data on one decoupled interface and broadcasts it to N decoupled output interfaces.   2. io   ​​ a. in:输入口: b. out: n个输出…
https://mp.weixin.qq.com/s/6McbqOKM4fu4J5vdpZvxKw   简单介绍异步队列(AsyncQueue)的实现.   ​​ 0. 异步队列   异步队列的两端分属不同的时钟域,拥有各自的复位逻辑. 异步队列用于存值的一端为上游端(source),用于取值的一端为下游端(sink).   1. AsyncQueueParams   ​​ 异步队列的参数,包含如下几项: a. depth   队列深度,表示队列可以存储几个元素:   b. sync   表示流…
最近大概读一点UCB发布时间Rocket处理器的源代码,的每个文件的源代码的功能有一定的一般理解,Mark一点点. Rocket是一家64bit标量处理器,5第一阶段管道,用途risc-v指令集.综合FPU,还有很多or1200没有功能,实例:无堵塞高速缓存.分支预测.返回地址堆栈.硬件页表填充.cache支持ECC.支持多核等. Rocket的源代码是使用Chisel编写的,Chisel是UCB公布的基于Scala的领域特定语言.能够在https://github.com/ucb-bar/ro…
1.原因:没有控制语句导致的迭代器的越界,使得map中的数据无法传入reduce,从而无法把结果传入目标文件中. 在进行Mapreduce实例——WordCount实验时遇到的错误,开始以为是lib包导入和读取源文件格式的问题,后来无论怎么修改都会报这个错误,报错如下: java.lang.Exception: java.util.NoSuchElementException at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(Loca…
修改rocketmq官方代码测试: package com.alibaba.middleware.race.rocketmq; import java.util.Scanner; import com.alibaba.rocketmq.client.exception.MQClientException; import com.alibaba.rocketmq.client.producer.DefaultMQProducer; import com.alibaba.rocketmq.clien…
转载地址: http://blog.csdn.net/leishangwen/article/details/46604819 最近大概阅读了一下UCB发布的Rocket处理器的源码,对源代码各个文件的功能有了一些大致的了解,Mark一下. Rocket是一款64bit的标量处理器,5级流水线,采用的是risc-v指令集,集成FPU,并有许多or1200没有的特性,比如:无阻塞缓存.分支预测.返回地址堆栈.硬件页表填充.cache支持ECC.支持多核等. Rocket的源代码是使用Chisel编…
package com.code; import java.util.Arrays; public class Test04_4 { public static int[] solution(int N, int[] A) { // write your code in Java SE 8 int size = A.length; int [] res = new int[N]; int max = 0; for(int i=0;i<size;i++){ if(A[i]==N+1){ if(i>…
问题: 使用Springboot打包为war部署于Tomcat7中报错 java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager... 原因: Springboot内嵌tomcat8,与tomcat7冲突 解决: 排除Springboot中的tomcat相关依赖,记得添加作用…
DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.Arrays.asList的定义,函数参数是Varargs, 采用了泛型实现.同时由于autoboxing的支持,使得可以支持对象数组以及基本类型数组. 不过在使用时,当传入基本数据类型的数组时,会出现小问题,会把传入的数组整个当作返回的List中的第一个元素,例如: public static vo…
一.Logger 的级别 比log4j的级别详细,全部定义在java.util.logging.Level里面.各级别按降序排列如下:SEVERE(最高值)WARNINGINFOCONFIGFINEFINERFINEST(最低值)此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL 启用所有消息的日志记录.logger默认的级别是INFO,比INFO更低的日志将不显示(但也会写入文件). 注意:高等级的Logger不会显示(或写入)低等级的记录.低等级的Logger会显示(或写入)高…
今天尝试使用java.util.Properties来保存应用配置,然而遇到了好几个问题,对于熟悉此内容的来说可能都是猪一样的错误,但难免有像我一样的新手再次遇到,希望此文能有所帮助. 错误1 java.io.IOException: open failed: EROFS (Read-only file system)at java.io.File.createNewFile(File.java:940) 出错代码: File file = new File("config.properties…
今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足条件的对象,这时想当然地想到直接调用Set的remove(Object o)方法将指定的对象删除即可,测试代码:   public class Test {    public static void main(String[] args) {        User user1 = new User();        user1.setId(1);        user1.setName("zhangsan"); Us…
------------------------------------------java util 下的concurrent包--------并发包--------------------.java.util.concurrent他下面的接口摘要:    1.ThreadFactory    2.RunnableFuture<V>    3.Executor    4.ExecutorService    5.ConcurrentMap<K,V>    6.BlockingQu…
原子类java.util.concurrent.atomic.*原理分析 在并发编程下,原子操作类的应用可以说是无处不在的.为解决线程安全的读写提供了很大的便利. 原子类保证原子的两个关键的点就是:可见性和写数据一致性. 对修改可见 使用volatile来保证读取到最新的数据. volatile语义: 用简单的文字来讲,volatile保证了Java共享变量在多线程环境下对读可见的特性.因为它不是Java语言级别的锁,所以不会造成上下文切换,使用恰当的情况下比锁有更好的性能. 底层原理: vol…