在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12906|回复: 45

新书出版——“步步惊芯 软核处理器内部设计分析”开始预售了

[复制链接]
发表于 2013-6-24 13:03:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
封面.jpg


新书出版——“步步惊芯 软核处理器内部设计分析”开始预售了

china-pub预售地址:http://product.china-pub.com/3768163


内容简介:
    《步步惊“芯”——软核处理器内部设计分析》以开源32位软核处理器or1200为研究对象,像引导读者如做解剖学实验那般,对其进行剖析,力图使读者对教科书上介绍的处理器有一个实践上的认识,打破处理器令人高深莫测的印象,同时使读者了解处理器设计的细节。or1200包括cpu、mmu、cache、总线接口、电源管理、中断控制和计时器单元等多个模块,对于不同的模块,根据其难易程度,采用指令驱动分析法、情景分析法及直接分析源代码等不同的分析方法,便于读者理解。
   通过阅读本书,读者可以掌握一款成熟的软核处理器or1200的设计思路、实现方法,同时更加深刻、具体地理解计算机组成原理、计算机体系结构等课程介绍的知识。
  《步步惊“芯”——软核处理器内部设计分析》适合计算机专业的学生、fpga开发人员、处理器设计者、嵌入式系统应用开发工程师、对处理器内部实现感兴趣的读者及对这个世界充满好奇心的读者阅读,也可以作为高等院校计算机组成原理、计算机体系结构等课程的实践参考书。


部分前言:

    人看见我
  就是看见了父
  我就是道路、真理、生命
  若不借着我
  没有人能到父那里去
  ——《约翰福音》
  现在看来,用上述语句形容1971年诞生的世界上第一款商用微处理器Intel 4004,似乎也是恰当的。从“人类历史上最具革新性的产品之一”(戈登·摩尔语)的4004诞生至今,已过了四十多年,期间,处理器的应用范围不断扩展,渗透到各行各业,浸入人们的日常生活,极大地影响了第五次信息革命的进程。对其自身而言既有“变”也有“不变”,“变”的是处理器的性能,“不变”的是其高高在上的形象,处理器设计制造作为国家信息产业的基石之一,一直都是高科技行业,轻易无法涉足。幸运的是,随着可编程硬件技术的持续发展,如今可以通过编写代码实现处理器,出现了软核处理器,它的出现使得寻常人士也能有机会了解处理器内部实现原理,甚至参与处理器的设计、研发。
  软核处理器有很多,比如:NiosII、OR1200、LEON3和OpenSparc等,本书选择OR1200作为分析对象,深度剖析其内部实现,理解其设计思路、工作过程。选择OR1200的原因有两个:一方面OR1200是开源的;另一方面,笔者在学习处理器的过程中有一个体会,那就是“一通百通、融会贯通、取长补短、创新提高”。我们的最终目的是了解处理器的实现原理,不必过多纠结于选择哪个、不选哪个,处理器设计中很多问题都是相通的,深入学习一款处理器,明白其架构,在这个过程中可以找到学习处理器的途径,找到适合自己的学习方法,有了方法,再学其他的处理器时就会顺利很多,所以称为“一通百通”。
  分析第一个处理器内部实现时,是抱着学习的态度,学第二个、第三个就应该在头脑中形成一种比较的意识,比较这几种处理器实现相同功能的部分为何会有不同的设计方法,哪一种性能更好,这就称为“融会贯通”。通过前面的两步,我们已经如牛顿那般站在巨人的肩膀上了,学习了各种处理器的设计原理,明白了各自优劣,在自己设计处理器的时候就可以“取长补短”。此外,通过独立思考,或者由于不同设计思路的碰撞,可能会产生新的、更好的设计灵感,是谓“创新提高”。


    适合对确定性世界狂热追求者阅读。通过阅读本书,读者将发现,虽然处理器内部十分复杂,但是从加电的那一刻开始,它就按照预定程序运行,每一刻都是可预测的,都是确定性的。
  适合对处理器内部实现有着强烈好奇心的朋友阅读。本书通过对OR1200处理器的剖析,将使读者全方位了解32位RISC处理器设计。
  适合不满足于教科书的同学阅读。本书可以作为实践参考书,帮助读者理解书本上抽象的概念,同时培养读者的动手能力。
  适合正在从事软核处理器开发、设计的人员阅读。本书将提供一些经验、一些好的方法,帮助读者做到事半功倍。
  适合正在从事嵌入式开发的人员阅读,本书对处理器的一些介绍,有助于嵌入式开发。
  内容安排
  全书共16章,每章的主要内容如下。
  第1章简单介绍了目前主要的开源软核处理器,并做了对比,然后重点介绍了OR1200的架构、代码组织,并对本书的分析方法进行了说明。
  第2章带领读者一步一步建立起实验平台、准备好实验工具,有了平台和工具的帮助,可以更加方便地认识和理解OR1200的内部细节。
  第3章剖析了OR1200中的QMEM模块,这是一个快速存储器模块,可以在一个时钟周期内读取其中的指令,同时分析了复位结束后,指令的读取过程,给出了一个理想的取指模型。
  第4~9章分别剖析了OR1200中数据处理类指令、特殊寄存器访问类指令、转移类指令、异常处理类指令、乘法/除法类指令和加载存储类指令的处理过程。这些指令也是OR1200支持的全部指令,分析了这些指令的处理过程,也就明白了OR1200处理器中CPU模块的内部结构、工作原理。在第9章最后给出一个完整的OR1200流水线数据通路图,而4~9章中,对每一类指令处理过程的分析都采用相同的方法:首先写一段简单的测试代码,测试代码包含我们即将分析的指令类别中的全部或部分指令,然后使用OR1KSim模拟器查看执行情况,接下来对这一类指令中有代表性的若干条指令采用流水线驱动的方法进行分析,即分析指令处理过程中,在流水线各个阶段引起的信号变化,以及通过这些变化的信号是如何逐步实现指令目标的。
  第10章剖析了MMU模块,采用的是情景分析法,即通过分析使用该模块的各种情景及各种情景下模块的工作过程,达到了解该模块原理的目的。
  第11章建立了一个基于OR1200的简单SOPC,后续章节将借助该SOPC分析OR1200中的指令Cache、数据Cache等模块。
  第12、13章分别剖析了OR1200中的指令Cache、数据Cache,采用的是情景分析法。
  第14章剖析了Store Buffer模块,采用的是直接分析源代码的方式。
  第15章剖析了OR1200处理器与外部Wishbone总线连接的接口模块WB_BIU,采用的是情景分析法。
  第16章剖析了电源管理模块、计时器单元、可编程中断控制器,由于比较简单,采用的都是直接分析源代码的方式。


本书特色:
  (1)国内第一本采用指令驱动分析法、流水线驱动分析法和情景分析法对一款成熟的32位软核处理器进行分析的图书,通过对流水线、MMU和Cache等处理器内部重要功能单元的分析,有效消除了处理器的神秘感。
  (2)国内第一本采用实验的方法对处理器设计中的一些重要思想进行阐释的书,如:通过实验,给出了存储操作在Cache存在、Cache不存在时的区别,从而使读者可以更加深刻地体会到Cache的作用。
  (3)国内第一本对OR1200处理器进行全面、详细介绍的图书。




目录:
《步步惊“芯”——软核处理器内部设计分析》
第1章openrisc介绍        1
1.1 开源软核处理器        1
1.2 openrisc 1000架构        4
1.3 or1200——openrisc 1000架构的一个实现        4
1.3.1 寻址模式        5
1.3.2 位和字节次序        6
1.3.3 寄存器集        6
1.3.4 指令集        7
1.3.5 异常模型        8
1.4 or1200代码组织        8
1.5 本书的分析方法        11
第2章 实验环境的搭建        13
2.1 gnu开发工具链的安装        13
2.2 gnu开发工具链的使用        18
2.2.1 一个简单的汇编程序        18
2.2.2 编译及elf文件介绍        19
2.2.3 链接        21
2.2.4 makefile文件        23
2.2.5 使用or1ksim模拟器运行程序        24
.2.3 创建or1200运行的最小系统        25
2.3.1 最小系统的创建        26
2.3.2 运行仿真        29
2.3.3 修改makefile        30
2.3.4 观察流水线        32
2.3.5 流水线介绍        33
2.4 本书的一些说明及定义        34
2.4.1 一些说明        34
2.4.2 一些定义        35
第3章 qmem剖析        37
3.1 qmem的作用        37
3.2 wishbone总线快速了解        40
3.3 qmem的wishbone总线接口        43
3.3.1 qmem与cpu、immu的连接        44
3.3.2 qmem与icache的连接        45
3.3.3 qmem与cpu、dmmu的连接        46
3.3.4 qmem与dcache的连接        47
3.4 qmem的内部ram        49
3.5 复位后取第一条指令的过程分析        51
3.5.1 复位信号有效阶段        51
3.5.2 复位信号无效后的第一个时钟周期上升沿        56
3.5.3 复位信号无效后的第一个时钟周期的组合逻辑阶段        57
3.6 第二条及后续指令的读取过程分析        58
3.6.1 复位信号无效后的第二个时钟周期的上升沿        58
3.6.2 复位信号无效后的第二个时钟周期的组合逻辑阶段        59
第4章 数据处理类指令剖析        61
4.1 数据处理类指令说明        61
4.2 分析用例        65
4.3 流水线的简单模型        67
4.4 l.add指令分析        69
4.4.1 l.add取指阶段的组合逻辑输出        70
4.4.2 l.add取指阶段的时序逻辑输出        73
4.4.3 l.add译码阶段的组合逻辑输出        75
4.4.4 l.add译码阶段的时序逻辑输出        80
4.4.5 l.add执行阶段的组合逻辑输出        91
4.4.6 l.add执行阶段的时序逻辑输出        97
4.4.7 第一条指令分析小结        98
4.5 l.sfeqi指令分析        99
4.5.1 l.sfeqi取指阶段的组合逻辑输出        99
4.5.2 l.sfeqi取指阶段的时序逻辑输出        100
4.5.3 l.sfeqi译码阶段的组合逻辑输出        100
4.5.4 l.sfeqi译码阶段的时序逻辑输出        101
4.5.5 l.sfeqi执行阶段的组合逻辑输出        102
4.5.6 l.sfeqi执行阶段的时序逻辑输出        105
4.5.7 第二条指令分析小结        106
4.6 alu分析        106
4.7 流水线数据相关的解决方法        112
4.8 定制属于自己的指令        117
4.9 不完整流水线数据通路图        121
第5章 特殊寄存器访问类指令剖析        123
5.1 or1200中的特殊寄存器        123
5.2 第0组特殊寄存器        125
5.3 特殊寄存器访问类指令说明        127
5.4 分析用例        128
5.5 l.mfspr指令分析        130
5.5.1 l.mfspr取指阶段的组合逻辑输出        131
5.5.2 l.mfspr取指阶段的时序逻辑输出        132
5.5.3 l.mfspr译码阶段的组合逻辑输出        132
5.5.4 l.mfspr译码阶段的时序逻辑输出        133
5.5.5 l.mfspr执行阶段第1个时钟周期的组合逻辑输出        135
5.5.6 l.mfspr执行阶段第1个时钟周期的时序逻辑输出        138
5.5.7 l.mfspr执行阶段第2个时钟周期的组合逻辑输出        141
5.5.8 l.mfspr执行阶段第2个时钟周期的时序逻辑输出        144
5.5.9 l.mfspr指令分析小结        144
5.6 l.mtspr指令分析        145
5.6.1 l.mtspr执行阶段的组合逻辑输出        147
5.6.2 l.mtspr执行阶段的时序逻辑输出        148
5.7 sprs分析        148
5.8 完善流水线数据通路图        155
第6章 转移类指令剖析        157
6.1 延迟槽        157
6.2 转移类指令说明        158
6.3 分析用例        159
6.4 l.bf指令分析        161
6.4.1 l.bf取指阶段的组合逻辑输出        162
6.4.2 l.bf取指阶段的时序逻辑输出        163
6.4.3 l.bf译码阶段的组合逻辑输出        164
6.4.4 l.bf译码阶段的时序逻辑输出        166
6.4.5 l.bf执行阶段第1个时钟周期的组合逻辑输出        169
6.4.6 l.bf执行阶段第2个时钟周期的组合逻辑输出        173
6.4.7 l.bf执行阶段第2个时钟周期的时序逻辑输出        174
6.4.8 l.bf指令分析小结        175
6.5 l.jalr指令分析        176
6.5.1 l.jalr取指阶段的组合逻辑输出        177
6.5.2 l.jalr取指阶段的时序逻辑输出        177
6.5.3 l.jalr译码阶段的组合逻辑输出        177
6.5.4 l.jalr译码阶段的时序逻辑输出        179
6.5.5 l.jalr执行阶段第1个时钟周期的组合逻辑输出        180
6.5.6 l.jalr执行阶段第2个时钟周期的组合逻辑输出        181
6.5.7 l.jalr执行阶段第2个时钟周期的时序逻辑输出        182
6.6 转移类指令对处理器效率的影响        182
6.7 继续完善流水线数据通路图        183
第7章 异常处理类指令剖析        185
7.1 or1200中的异常分类        185
7.2 or1200中的异常处理过程        185
7.3 异常处理类指令说明        187
7.4 分析用例        187
7.5 exception模块的作用        190
7.6 l.sys指令分析        195
7.6.1 l.sys取指阶段的组合逻辑输出        196
7.6.2 l.sys取指阶段的时序逻辑输出        196
7.6.3 l.sys译码阶段的组合逻辑输出        197
7.6.4 l.sys译码阶段的时序逻辑输出        198
7.6.5 l.sys执行阶段的组合逻辑输出        199
7.6.6 l.sys执行阶段的时序逻辑输出        201
7.6.7 异常处理过程——flu1状态        207
7.6.8 异常处理过程——flu2状态        211
7.6.9 异常处理过程——flu3状态        212
7.6.10 异常处理过程——flu4状态        212
7.6.11 异常处理过程——flu5状态        213
7.6.12 l.sys分析小结        214
7.7 l.trap指令分析        215
7.7.1 l.trap译码阶段的时序逻辑输出        216
7.7.2 l.trap执行阶段的组合逻辑输出        216
7.7.3 l.trap执行阶段的时序逻辑输出        216
7.7.4 异常处理过程——flu1状态        217
7.7.5 异常处理过程——flu2状态        217
7.7.6 l.trap分析小结        218
7.8 l.rfe指令分析        218
7.8.1 l.rfe取指阶段的组合逻辑输出        219
7.8.2 l.rfe取指阶段的时序逻辑输出        219
7.8.3 l.rfe译码阶段的组合逻辑输出        220
7.8.4 l.rfe译码阶段的时序逻辑输出        221
7.8.5 l.rfe执行阶段第1个时钟周期的组合逻辑输出        223
7.8.6 l.rfe执行阶段第2个时钟周期的组合逻辑输出        224
7.8.7 l.rfe执行阶段第2个时钟周期的时序逻辑输出        225
7.9 继续完善流水线数据通路图        226
第8章 乘法、除法类指令剖析        228
8.1 串行乘法与并行乘法        228
8.1.1 串行乘法        228
8.1.2 并行乘法        229
8.2 串行除法与并行除法        230
8.2.1 串行除法        230
8.2.2 并行除法        231
8.3 乘法、除法类指令说明        232
8.4 or1200中关于乘法、除法的一些配置        234
8.5 分析用例        234
8.6 l.mul指令分析(串行乘法)        238
8.6.1 l.mul取指阶段的组合逻辑输出        239
8.6.2 l.mul取指阶段的时序逻辑输出        240
8.6.3 l.mul译码阶段的组合逻辑输出        240
8.6.4 l.mul译码阶段的时序逻辑输出        241
8.6.5 l.mul执行阶段第1个时钟周期的组合逻辑输出        243
8.6.6 l.mul执行阶段第1个时钟周期的时序逻辑输出        245
8.6.7 l.mul执行阶段第2个时钟周期的组合逻辑输出        247
8.6.8 l.mul执行阶段第2个时钟周期的时序逻辑输出        249
8.6.9 l.mul执行阶段第33个时钟周期的时序逻辑输出        250
8.6.10 l.mul执行阶段第34个时钟周期的组合逻辑输出        250
8.6.11 l.mul执行阶段第34个时钟周期的时序逻辑输出        252
8.6.12 l.mul执行阶段第35个时钟周期的时序逻辑输出        252
8.6.13 l.mul分析小结        252
8.7 l.mul指令分析(并行乘法)        253
8.7.1 l.mul执行阶段第1个时钟周期的组合逻辑输出(并行乘法)        253
8.7.2 l.mul执行阶段第1个时钟周期的时序逻辑输出(并行乘法)        254
8.7.3 l.mul执行阶段第2个时钟周期的组合逻辑输出(并行乘法)        255
8.7.4 l.mul执行阶段第2个时钟周期的时序逻辑输出(并行乘法)        256
8.7.5 l.mul执行阶段第3个时钟周期的时序逻辑输出(并行乘法)        256
8.7.6 l.mul执行阶段第4个时钟周期的组合逻辑输出(并行乘法)        256
8.7.7 l.mul执行阶段第4个时钟周期的时序逻辑输出(并行乘法)        257
8.7.8 l.mul执行阶段第5个时钟周期的时序逻辑输出(并行乘法)        257
8.7.9 l.mul分析小结(并行乘法)        257
8.8 l.mac指令分析        257
8.8.1 l.mac执行阶段第1个时钟周期的组合逻辑输出        259
8.8.2 l.mac执行阶段第1个时钟周期的时序逻辑输出        260
8.8.3 l.mac执行阶段第2个时钟周期的组合逻辑输出        261
8.8.4 l.mac执行阶段第2个时钟周期的时序逻辑输出        261
8.8.5 后l.mac执行阶段第1个时钟周期的时序逻辑输出        262
8.8.6 后l.mac执行阶段第2个时钟周期的时序逻辑输出        262
8.8.7 l.mac指令分析小结        263
8.9 l.div指令分析(串行除法)        263
8.10 继续完善流水线数据通路图        266
第9章 加载存储类指令剖析        268
9.1 加载存储类指令说明        268
9.2 分析用例        270
9.3 l.sb指令分析        274
9.3.1 l.sb取指阶段的组合逻辑输出        276
9.3.2 l.sb取指阶段的时序逻辑输出        276
9.3.3 l.sb译码阶段的组合逻辑输出        276
9.3.4 l.sb译码阶段的时序逻辑输出        278
9.3.5 l.sb执行阶段第1个时钟周期的组合逻辑输出        280
9.3.6 l.sb执行阶段第2个时钟周期的组合逻辑输出        286
9.3.7 l.sb执行阶段第2个时钟周期的时序逻辑输出        287
9.3.8 l.sb指令分析小结        287
9.4 l.lbs指令分析        288
9.4.1 l.lbs执行阶段第1个时钟周期的组合逻辑输出        290
9.4.2 l.lbs执行阶段第2个时钟周期的组合逻辑输出        291
9.4.3 l.lbs执行阶段第2个时钟周期的时序逻辑输出        294
9.4.4 l.lbs指令分析小结        294
9.5 对齐异常处理流程        295
9.6 三级流水线还是五级流水线        297
9.7 完整的流水线数据通路图        298
第10章 mmu剖析        301
10.1 mmu的作用及工作过程        301
10.2 tlb的作用及工作过程        303
10.3 immu分析        305
10.3.1 immu结构        305
10.3.2 immu中的特殊寄存器        307
10.3.3 or1200中关于immu的一些配置        308
10.3.4 itlb代码分析        309
10.3.5 immu使用情景        313
10.3.6 分析用例        313
10.3.7 immu使用情景之一——指令取指阶段itlb命中且无页错误情况下immu工作分析        324
10.3.8 immu使用情景之二——指令取指阶段itlb未命中情况下immu工作分析        329
10.3.9 immu使用情景之三——指令取指阶段itlb命中但有页错误情况下immu工作分析        333
10.3.10 immu使用情景之四——l.mtspr执行阶段immu工作分析        333
10.3.11 immu使用情景之五——l.mfspr执行阶段immu工作分析        335
10.3.12 immu分析小结        336
10.4 dmmu分析        336
10.4.1 dtlb结构图        337
10.4.2 dmmu中的特殊寄存器        337
10.4.3 dmmu使用情景        338
第11章 基于or1200的一个简单sopc        340
11.1 简单sopc的结构        340
11.2 wishbone总线互联矩阵wb_conmax        341
11.3 挂接在互联矩阵wb_conmax下的ram模块        342
11.4 sopc顶层文件        344
11.5 modelsim新建工程min_or1200_sopc        346
11.6 示例程序        348
第12章 icache剖析        350
12.1 cache基本知识        350
12.1.1 cache的作用        350
12.1.2 cache的结构与工作过程        351
12.2 or1200中cache简介        352
12.3 icache结构        353
12.3.1 icache模块与其余模块的连接关系        353
12.3.2 icache中数据部分        354
12.3.3 icache中控制部分        356
12.3.4 icache数据部分与控制部分的对外接口        357
12.4 icache中的特殊寄存器        358
12.5 icache使用情景        358
12.6 分析用例        359
12.7 icache使用情景之一——l.mtspr执行阶段icache工作分析        364
12.7.1 执行阶段的组合逻辑输出        364
12.7.2 执行阶段的时序逻辑输出        364
12.8 icache使用情景之二——指令取指阶段icache失靶情况下icache工作分析        365
12.8.1 第1个时钟周期的组合逻辑输出        365
12.8.2 第1个时钟周期的时序逻辑输出        368
12.8.3 第2个时钟周期的组合逻辑输出        370
12.8.4 第2个时钟周期的时序逻辑输出        371
12.8.5 第n个时钟周期的组合逻辑输出        373
12.8.6 第n个时钟周期的时序逻辑输出        373
12.8.7 第n+1个时钟周期的组合逻辑输出        375
12.8.8 第2n个时钟周期的组合逻辑输出        376
12.8.9 第2n个时钟周期的时序逻辑输出        377
12.8.10 第2n+1个时钟周期的组合逻辑输出        378
12.8.11 第3n个时钟周期的组合逻辑输出        379
12.8.12 第3n个时钟周期的时序逻辑输出        379
12.8.13 第3n+1个时钟周期的组合逻辑输出        379
12.8.14 第4n个时钟周期的组合逻辑输出        379
12.8.15 第4n个时钟周期的时序逻辑输出        380
12.8.16 第4n+1个时钟周期的组合逻辑输出        380
12.8.17 icache失靶时工作过程小结        381
12.9 icache使用情景之三——指令取指阶段icache命中情况下icache工作分析        381
12.9.1 第1个时钟周期的组合逻辑输出        382
12.9.2 第1个时钟周期的时序逻辑输出        382
12.9.3 第2个时钟周期的组合逻辑输出        383
12.10 icache使用情景之四——指令取指阶段内存页禁止缓存情况下icache工作分析        384
12.10.1 第1个时钟周期的组合逻辑输出        384
12.10.2 第1个时钟周期的时序逻辑输出        385
12.10.3 第2个时钟周期的组合逻辑输出        385
12.10.4 第2个时钟周期的时序逻辑输出        386
12.10.5 第3个时钟周期的组合逻辑输出        386
12.10.6 第n个时钟周期的组合逻辑输出        387
12.10.7 第n个时钟周期的时序逻辑输出        387
第13章 dcache剖析        389
13.1 dcache的特别之处        389
13.2 dcache结构        390
13.2.1 dcache模块与其余模块的连接关系        391
13.2.2 dcache中数据部分        392
13.2.3 dcache中控制部分        394
13.2.4 dcache数据部分与控制部分的对外接口        395
13.3 dcache中的特殊寄存器        396
13.4 dcache使用情景        397
13.5 分析用例        398
13.5.1 修改已有的简单sopc        398
13.5.2 分析用例        398
13.6 dmmu地址翻译        405
13.7 dcache使用情景之一——存储指令执行阶段dcache失靶        405
13.7.1 通写法下dcache工作过程分析        406
13.7.2 回写法下dcache工作过程分析        413
13.8 dcache使用情景之二——存储指令执行阶段dcache命中        422
13.8.1 通写法下dcache工作过程分析        422
13.8.2 回写法下dcache工作过程分析        424
13.9 dcache使用情景之三——l.mtspr指令写dcache中特殊寄存器        427
13.9.1 通写法策略下指令l.mtspr写dcbir、dcbfr的过程分析        428
13.9.2 回写法策略下指令l.mtspr写dcbir的过程分析        429
13.9.3 回写法策略下指令l.mtspr写dcbwr的过程分析        431
13.9.4 回写法策略下指令l.mtspr写dcbfr的过程分析        437
13.10 dcache分析小结        438
第14章 store buffer(sb)剖析        440
14.1 sb模块的作用与工作过程        440
14.2 sb模块的结构        441
14.2.1 sb模块的对外连接关系        441
14.2.2 sb模块内部结构        442
14.2.3 sb模块有关的宏定义        442
14.3 示例程序        442
14.4 sb模块代码分析        444
14.4.1 fifo分析        444
14.4.2 sb分析        447
第15章 wb_biu剖析        450
15.1 wb_biu模块的对外连接关系        450
15.2 wishbone寄存反馈总线周期        451
15.3 wb_biu代码分析        454
15.3.1 wb_biu中的有限状态机        455
15.3.2 总线时钟与处理器时钟不同时的处理代码        462
第16章 pm、tt、pic剖析        466
16.1 电源管理模块pm分析        466
16.1.1 pm介绍        466
16.1.2 pm模块的对外连接关系、特殊寄存器及相关宏定义        466
16.1.3 pm代码分析        468
16.2 计时器单元tt分析        471
16.2.1 tt介绍        471
16.2.2 tt的对外连接关系及相关宏定义        472
16.2.3 tt代码分析        473
16.2.4 计时器中断响应过程        475
16.3 可编程中断控制器pic分析        477
16.3.1 pic介绍        477
16.3.2 pic的对外连接关系及相关宏定义        478
16.3.3 pic代码分析        479
发表于 2013-6-25 10:53:24 | 显示全部楼层
本帖最后由 peterlin2010 于 2013-6-25 11:06 编辑

原创:一步一步学习开源32位CPU or1200(众多的IP core,三年来的资料

WIKI
http://en.wikipedia.org/wiki/OpenRISC_1200

如果是分析  8051 or ARM or 80x86
  cpu coding 應該更好吧

另外和這本

开源软核处理器OpenRisc的SOPC设计

有那些不同?
 楼主| 发表于 2013-6-25 13:15:29 | 显示全部楼层
感谢peterlin2010的关注,首先or1200是完全开源的,而是是一款32位RISC架构处理器,所以与8051、80x86都更有优势,而关于ARM,之前有作者(李新兵)写过FreeARM,有本书是《兼容ARM9的软核处理器设计》,已经有牛人工作在前了,所以我选择的是or1200.

其次这本书与《开源软核处理器OpenRISC的SOPC设计》完全不同,那本书重点是SOPC设计,所以书中有大量处CPU外的一些控制器介绍,而本书重点在于CPU内部设计实现的分析,带领读者理解or1200的代码及其设计思想,读者可以明白每一条具体指令在硬件上是如何实现的。
发表于 2013-6-29 04:32:16 | 显示全部楼层
open的or1200的cache controller有问题,不知你是否分析出来?
 楼主| 发表于 2013-6-29 10:30:45 | 显示全部楼层
有一个宏定义是有问题的,关于通写法的、回写法设置的,等我周一贴出来,现在手边没有代码
发表于 2013-7-1 12:41:11 | 显示全部楼层
本帖最后由 tyxuanyuanlx 于 2013-7-1 12:50 编辑

已经买了,不过要等到11号之后才能拿到书,很期待啊,等拿到书,有问题就请教你了
 楼主| 发表于 2013-7-1 23:11:12 | 显示全部楼层
回复 4# kk2009


   不好意思这么晚才回复,我发现在or1200_ctrl.v的487行有如下代码:



  1. `ifndef OR1200_DC_WRITEHROUGH
  2. // l.mtspr
  3. `OR1200_OR32_MTSPR: begin
  4. wait_on = `OR1200_WAIT_ON_MTSPR;
  5. end
  6. `endif


复制代码


其中的宏定义 OR1200_DC_WRITEHROUGH 是错误的,应该是 OR1200_DC_WRITETHROUGH ,中减少了一个T,如果按照上面错误的定义,那么当配置DCache使用通写法时(也就是定义了宏OR1200_DC_WRITETHROUGH)会出现非预期的情况。

不知道兄台有何新的发现?
 楼主| 发表于 2013-7-1 23:13:51 | 显示全部楼层



十分感谢版主的支持,再耐心等几天吧
发表于 2013-7-2 08:54:49 | 显示全部楼层


十分感谢版主的支持,再耐心等几天吧
leishangwen 发表于 2013-7-1 23:13




    恩,慢慢等吧,很期待啊,希望作者可以开一帖专门答疑
 楼主| 发表于 2013-7-2 09:30:16 | 显示全部楼层
no problem
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 18:19 , Processed in 0.032661 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表