SeeMIPSRun 2nd Edition 中文版:深入理解MIPS架构与Linux系统

需积分: 50 4 下载量 30 浏览量 更新于2024-09-20 收藏 6.24MB PDF 举报
《See MIPS Run - 第二版》中文版是一本专门针对MIPS架构的系统级编程和Linux内核理解的教材。该书由David Sweetman和J. Qu撰写,于2008年出版。MIPS (Microprocessor without Interlocked Pipeline Stages) 是一种广泛应用于嵌入式系统和高性能计算的RISC(精简指令集计算机)架构。 本书的核心内容围绕MIPS处理器的工作原理、体系结构、指令集,以及如何在Linux环境下进行程序设计。第二版更新了对Linux内核的相关知识,包括Linux内核的源码阅读、MIPS指令集的深入解析、以及如何利用MIPS进行高效系统编程。书中还包含了丰富的实战例子,如“skimming the cream”部分,帮助读者通过实践提升对MIPS和Linux的理解。 章节2.2可能涉及了Linux下MIPS的内存管理、进程调度、以及与硬件交互的细节。这部分强调了理解和掌握MIPS处理器特性的关键,比如无锁流水线设计(LulÌ和LU/`),这对于编写高性能和低级别系统程序至关重要。 此外,书中还探讨了如何在Linux环境中进行调试和性能优化,包括使用调试工具(如GDB)和理解性能分析器。对于初学者来说,它可能还包括基础的编译器和链接器使用,以及MIPS汇编语言的基础知识。 书中还可能提到了MIPS在嵌入式系统和实时应用中的角色,因为MIPS因其低功耗和高效的特性被广泛应用于此。同时,对于高级读者,书中可能包含了一些更深入的技术话题,如异常处理、中断管理以及MIPS硬件和软件接口的设计。 《See MIPS Run - 第二版》中文版是一本深入剖析MIPS架构和Linux内核编程的实用指南,适合那些想要在MIPS平台或者嵌入式系统领域工作的程序员、系统工程师,以及对底层技术感兴趣的读者。通过学习本书,读者可以提升对MIPS处理器的操控能力,并在实际项目中运用所学知识。
2020-06-28 上传
对于MIPS体系结构当前发展的资料是最新的,相对于第一版而言,增加了许多新材料,包括对MIPS32和MIPS64对体系结构的标准化、多线程等全新的扩展,对广为流行的Linux系统在MIPS体系结构上的实现也做了很好的处理。是初学者较好的了解MIPS体系结构的材料,也是有经验开发人员好的参考材料。 译者说明 译为主。个别情况下参考某些译法进行慘订,或者根捃译者的理解直接翻详。例 如对于 cache alias的翻译,以及第七章对于两种非数NaN的翻译等等 第十一章对于 JTAG probe的翻译,处理有所不同。一种较为广泛的译法 是译成“探针,”译者也采用了这种译法。但“探针”一词在缺乏上下文的情况 下容易引起歧义,也容易让不熟悉的人认为它是一种细长的针形设备。有鉴于 此,文中也给出∫另一种译法,即“接探器。”“接探”一词漾于“JTAG"的音译“接 探格”-一又可以理解为意译,即“·种集成电路的连接测试、探测的标准规 格。”这样理解, probe作为符合“接探格”的设备,译成“接探器”就很自然,兼顾 了音和意,也消除∫歧义。译文中同时采用∫两种译法,但基木侏持一鈫。哪种 译法更好,读者可自己判断 从207年7月27日的草稿,到2007年9月7日的初稿,其作了较大的 修订。此后又有两次局部的修订,更正了译文中的一些错误。2007年12月31日 的版本作了更全而的修订,修订范闱主要是针对书的后半部分。该次修订的幅 度较大,除了纠止笔误外,对些译得不够准确、比较生硬、或者衔接不好的地 方也作了不少调整,某些不够清晰的插图重新制作,个别表格排版有轻微变动。 此外,该次修订在书后增加了《译者补遗》一节,介绍了几条与PC代码有关的 MIPS汇编指小语句的说明,希望对部分读者有所帮助。
2013-08-29 上传
英国科学家 Dominic Sweetman(经典著作 See MIPS Run 的作者),称 MIPS 为“高效的 RISC 体系结构中最优雅的一种体系结构”。 它是一个双关语: 即是 Microcomputer without Interlocked Pipeline Stages 的缩写,同时又是 Millions of Instructions Per Second 的缩 写。 MIPS 的处理单元是一个五级流水线:Instruction Fetch, Register & Decoder, ALU, Memory 以及 Write back。一开始的 MIPS 是为 32 位系统设计的,实际上,后续的 64 位扩 展,也依然对 32 位的工作模式向下兼容着。一如其他的 RISC 处理器,MIPS 的每条指令长度 是固定的 32bit。(因此,最长的局部跳转指令只能跳转 2 的 26 次方 Byte,也就是 2 的 24 次 方,16777216 条指令) MIPS 有 32 个通用寄存器,编程者可以使用其中除$0 外的所有寄存器暂存数据。$0 寄存 器,在硬件上被设计为永远读出 0。我们可以用$0 寄存器的此特性,实现一些技巧性的编程, 譬如实现 NOP 操作。MIPS 本没有 NOP 指令,但由于对$0 寄存器的写入实际上无意义,可以 作为空操作使用。 事实上,编译器从高级语言(典型如 C/C++)转换为 MIPS 汇编指令时,一般总是遵守一 定的寄存器使用约定。某些寄存器用来从函数中传入和传出参数,存储临时数据,另一些则起特 殊作用,如保存调用函数时的指令地址,或作为堆栈指针等。如果你使用汇编开发,理论上可以 无视这点约定,但是,一般地,遵守这个约定,与人方便,也为己方便。关于寄存器使用的约定, 以后会展开论述。 一如所有的 RISC 处理器,MIPS 没有 CISC 那样复杂多变的寻址方式,统一为 Load/Store 寻址。任何载入和存储操作,都可写为如下形式: lw $1, offset ($2) 这条指令的操作符可以为 Load 或 Store,一次 Load/Store 操作的范围可以为字/半字/ 字节(对应 gcc 的 int, short 和 char)。偏移量是一个带符号的 16bit 整数。两个作为操作数 的寄存器可以是任何通用寄存器。(你可以向$0 写入,但无任何意义,等同于空操作)。对于 64 位模式下,也可以对 double 类型进行操作。注意 Load/Store 都必须对应一个对齐的地址,否 则会引发一个异常(Exception)。 MIPS 支持最多 4 个协处理器。协处理器 CP0 为 CPU 的控制协处理器,是体系结构中必须 实现的。CP1 为浮点处理器。CP2 保留,各生产厂商往往用来实现一些自己的特色功能,例如 RMI 的 Fast Message Ring 等。CP3 原本也是保留共扩展用,但很多 MIPS III 和 MIPS IV 时代的扩展指令集使用了它。对于 CP0,我们会有专门的一段用来讨论。 为适应处理器向多核时代的演进, MIPS 引入了多核操作必要的原子指令 (Atomic operation)、内存屏障(Barrier)等操作。在 SMP 或 AMP 等多核架构中,这些指令是并行计算 同步的保障。