MyFPGA Forum

 找回密码
 注册
搜索

《RISC-V on T-Core 》课程FAQ

查看数: 5881 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-8-21 09:47

正文摘要:

本帖最后由 Doreen 于 2020-9-17 14:09 编辑 第一讲 1. E203使用的是ITCM,在FPGA上部署的话,那么程序是怎么进到ITCM里的呢?难道说是用Quartus初始化内存重新综合然后烧录进去吗?固化在FLASH中的程序,运行都 ...

回复

Doreen 发表于 2020-8-21 10:43:43
本帖最后由 Doreen 于 2020-8-21 11:26 编辑

第十二讲
1. FreeRTOS提供了5种 内存管理方式,请问本次课程我们用的哪种任务管理方式?

答: 5种方式根据其特性各有其应用场景,我们用的是heap_4.c。

2. 创建的2个任务里面用到LED0  LED1,那LED的掩码位是怎么确定的呢?

答:FPGA的LED是 连接到RISC-V GPIO 对应位,具体的我们在第九讲有讲到。
Doreen 发表于 2020-8-21 10:43:03
第十讲

1. 在pwm实验中,pwmcmp0设置为9,那pwm波的周期是多少?

答:当设置pwmcfg寄存器的pwmzerocmp域为1时,计数值比较器寄存器pwms的值等于pwmcmp0设置的值时,计数值自动清零,重新计数;因此,pwm波的周期为10个计数时间(计数值范围为0~9)。
Doreen 发表于 2020-8-21 10:42:20
第八讲
1.从本讲中的流水灯实验现象可知:从QSPI Flash 启动的应用程序,T-Core掉电重启后还可以看到流水灯。那如果下载时只想看一下现象,而不想烧录到QSPI Flash,应该如何做呢?

答:
通过切换 GNU RISC-V Cross Linker 的 link文件,将 link_flash.lds文件切换至 link_itcm.lds 文件即可。
link 脚本中的内容是包括 init,text,data等等程序片段及设定对应的存储器。所以 link_flash/link_itcm两个link脚本可以切换固化 Flash 和只在 ITCM 中运行两种方式。link_itcm 的原理是通过 OpenOCD 将程序加载进 ITCM 中,并跳转到 ITCM 执行,由于 ITCM 是 sram 架构,所以掉电后程序就丢失了。从而实现了只看一下现象而不固化程序的目的。
Doreen 发表于 2020-8-21 10:41:54
第七讲

1. 如果是自定义指令,GCC工具是否不支持?

答:不支持,需要对 GCC 进行修改才能支持;第七讲主要介绍 RISC-V 自定义指令的硬件修改,之后会有专门一讲介绍软件的修改和 dot 指令的 demo。

2. 是不是尽量不要选用 resreved 的编码空间?
答:是的,在自定义指令的时候尽量不要选用 reserved 的编码空间,因为它的指令标准会被更新,更新后可能会使用到这个编码空间,如果你刚好也选用了这个编码空间,那就会发生冲突。

3. 假如在 E203 中新增一条 ans = a % b 的组合逻辑型自定义指令,需要对数据通路中的哪些阶段进行修改呢?
答:因为 ans = a % b 是两个源操作数寄存器和一个目的寄存器的类型的指令,所以可以直接借用 R-type 指令的数据通路,因此只需要对译码过程和 ALU 进行修改,也就是添加 ans = a % b 指令的译码、并在 ALU 中添加该指令的请求和实际运算的实现。
Doreen 发表于 2020-8-21 10:40:58
本帖最后由 Doreen 于 2020-8-21 11:16 编辑

第五讲

1. 跟 Cache 相比,TCM 容量可以做很大吗?

答:Cache 是一种高速缓存,而 TCM 是为了弥补 Cache 访问的不确定性,而增加的片上高速存储器;TCM 的性能和 Cache 的性能相当,二者的速度都比较快,一般是用 SRAM 来实现,而 SRAM 的集成度较低,与 DRAM 相比,相同容量的 SRAM 他的体积要大很多,而且价格比较高,所以 TCM 和 Cache 都不会做很大。

2.段表和页表都是必须的吗,还是选择其一就可以?

答:段表和页表都是虚拟地址到物理地址转换的映射表,段表是分段管理中虚拟地址到物理地址转换关系的表,而页表是分页管理中地址转换关系的表;分段管理和分页管理是两种不同的管理方式,可以按照情况选用其一即可。

3. 为什么 ITCM 和 DTCM 的位宽设置的不一样,一个是 64 位的,一个是 32 位的?

答:E203 将 ITCM 设置为 64 位的原因是,假如连续取两次 32 位的指令时,只需要发起一次 ITCM 读取,更省功耗。

4. 在 ITCM_CTRL 和 DTCM_CTRL 中都用了仲裁器,这个仲裁器的作用是什么?

答:仲裁器是为了仲裁不同 master 发起的访问,这些访问会有 IFU 发起的、预留的 external 发起的、LSU 发起的;比如假设 IFU/LSU 同时都访问 ITCM,由于 LSU是在 IFU 阶段之后的,那 LSU 执行的指令肯定是在 IFU 执行的指令之前的,所以 LSU 总线的优先级就会高于 IFU 总线。

5. QSPI0 Flash 是怎样连接到系统总线的,从 QSPI0 Flash 中读出一个指令的延迟会不会很长?

答:IFU/LSU 都可以访问 BIU,而 BIU 通过如下通道来访问 QSPI0 Flash:BIU总线 -> BIU 的存储器总线 ->  icb 1to8 分发器 -> QSPI0 Flash;
QSPI0 Flash 有 XIP(eXecute In Place,芯片内执行) 模式,可以直接在 Flash 中运行代码;也可以先把代码搬到 ITCM 中,这样就效率高些了;一般情况下,QSPI0 Flash 只用作固化代码。
Doreen 发表于 2020-8-21 10:40:03
第三讲
1. RISC-V架构跟MIPS架构是否很相似?

答:是的,RISC-V 跟MIPS 虽然是不同的指令架构,但是都是精简指令集,是有一定相似性的。RISC-V是基于前面众多指令集架构而设计优化出来的,具体差异可以阅读 大卫.帕特森等人撰写的《计算机组成与设计》的两个版本(分别为 mips版和RISC-V版)的书。

2. 为什么数据通路的下一PC值是+4 而不是+1呢?

答:存储器以字节为单位编址,32位指令的一条指令是四字节。需要说明的是RISC-V 也可以支持压缩指令集, 压缩指令集的指令编码是16位,这时下一PC值是+2。

3. 对于单指令周期的数据通路,指令需要几个周期完成?

答:单指令周期中,每个指令是在一个周期内完成。因为时钟周期对所有指令等长,因此时钟周期要由执行时间最长的那条指令决定,以此确保每条指令在一个周期内都能完成。相较于流水线,单指令周期的时钟频率会比较低。

4.第三讲讲解的代码是将E203改成了单周期吗?

答:本讲讲的是单指令周期数据通路,不过代码解析用的是E203的二级流水线的代码,这是因为单指令周期数据通路和流水线数据通路基本类似,为了保证课程的连贯性,所以直接拿E203的二级流水线代码进行讲解的。

5.本讲中提到部分指令不需要完整指令流程,所以这时不参与的模块控制信号为高阻态吗?

答:有些指令不需要所有的模块参与,这时候不参与的模块的控制信号是 dont care 的,控制信号 可以是0或1 。但是在FPGA内部信号一般要避免高阻态,严谨的说法确实是 dont care。

6. 为什么J-type指令会有写回PC+4的操作呢?

答:这个是RISC-V 架构指令集定义的,可以直接参阅RISC-V基金会网站的riscv-spec文档里面的定义。文档我们也有上传到 http://www.myfpga.org/discuz/for ... &extra=page%3D1

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-5-3 02:20 , Processed in 0.057859 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表