国防科大 . 麒麟操作系统
作者 陈怀临 | 2008-06-24 15:48 | 类型 专题分析, 中国系统软件, 弯曲推荐, 陈怀临时间 | 5条用户评论 »
(如果播放存在问题,请访问土豆视频版本陈怀临时间–国防科大 . 麒麟操作系统) | |
《See MIPS Run》–附录D MIPS的演化
作者 陈怀临 | 2008-06-07 19:00 | 类型 专题分析, 中国系统软件 | Comments Off
附录D MIPS的演化 MIPS16是一个1997年面世的可选的指令集扩展,它能减少二进制程序尺寸的30-40%。实现者希望这种CPU能够在很关心代码尺寸的场合中更有吸引力–这种场合通常就是指低成本系统。由于只应用于特定实现,它是一个多厂商标准:LSI, NEC和Philips都生产支持MIPS16的CPU。 | |
《See MIPS Run》–附录A 指令的时序和优化
作者 陈怀临 | 2008-06-07 18:14 | 类型 专题分析, 中国系统软件 | Comments Off
附录A 指令的时序和优化 | |
《See MIPS Run》–第十章 MIPS的C 语言编程
作者 陈怀临 | 2008-06-01 12:01 | 类型 专题分析, 中国系统软件 | Comments Off
第十章 MIPS 的C 语言编程 一个高效的C 运行环境依赖于C 语言程序的寄存器使用约定这一般由C 编译器强制规定因此对于汇编工程师来说也是需要强制遵守的参照2.2.1 部分对寄存器使用的全部约定本章内容涉及 阅读全文:第十章 MIPS的C 语言编程 | |
《See MIPS Run》–第九章 汇编编程
作者 陈怀临 | 2008-06-01 11:51 | 类型 专题分析, 中国系统软件 | 7条用户评论 »
第九章 汇编编程 1, MIPS汇编编译器(assembler)提供了大量的已经预定义的宏指令(extra macro-instruction)。所以编译器的指令集(instruction set)要比CPU实际提供的指令集大的多。 2,在MIPS汇编代码中有许多伪操作符,放在代码开始和结束的地方,用来预定义常用数据,控制指令排列顺序,以及控制对代码的优化。通常它们被称为“directives”或“pseudops”。 3,实际应用中,汇编代码往往要经过C语言预处理器(C preprocessor)的处理后,才被提交给assembler进行编译。C语言预处理器将汇编代码中的宏,用它自己的头文件中的定义进行替换。这可以使汇编代码书写起来稍微方便一点。 | |
《See MIPS Run》–第六章 内存管理与TLB
作者 陈怀临 | 2008-06-01 11:19 | 类型 专题分析, 中国系统软件 | 6条用户评论 »
第六章 内存管理与TLB 我们倾向于直接从最底层引入本书中的大部分主题进行探讨,对于一本关注计算机底层体系结构的书而言,这似乎是自然而然的。然而,为了说清楚内存管理硬件,我们得从MIPS R2000所寻求实现的unix风格的虚拟存储系统开始讲起。本章的后面我们还会讨论一下相同的硬件如何在其他环境下工作。 早期的MIPS CPU定位于支持运行在UNIX工作站与服务器上的应用程序,因此内存管理硬件被构想为一个最小化的能帮助BSD UNIX——一个经过完善设计并拥有充分多虚拟存储需求的操作系统的典型——提供内存管理功能的硬件。很明显的是,这些设计者们十分熟悉DEC VAX小型机,并且在从这种体系结构中获取了众多思路的同时,也摒弃了许多复杂设计。尤其是许多VAX使用微代码来解决的问题,在MIPS中被交由软件处理。 本章中我们将从MIPS的设计起点开始,面对着一个unix类型的操作系统以及它的虚存系统的众多需求。我们将会展示一下MIPS的硬件是如何满足这些需求的。结尾时,我们会讨论一下在不能像通常一样使用内存管理硬件的嵌入式系统中,您可以采取的几种使用方式。 | |
《See MIPS Run》–第五章 异常,中断与初始化
作者 陈怀临 | 2008-05-29 15:18 | 类型 专题分析, 中国系统软件 | Comments Off
第五章 异常,中断与初始化 在MIPS体系结构中,中断,陷入,系统调用,以及其他中断程序正常执行的事情统统被称为异常.异常在MIPS体系结构中被同一种机制处理.异常包括: 外部事件.包括中断,读总线错.在有外部事件时,中断被用来引起CPU的注意.使用中断比使用CPU轮询机制来得快且更有效. 内存映射异常.当没有合适的物理地址对应虚拟地址时,或当写一个有写保护的页时,会发生此种异常.操作系统会监查内存映射异常的具体原因.某些异常是由于应用程序访问了非法内存.操作系统会终止应用程序的执行以保护其他应用程序.良性的内存映射异常可以触发操作系统执行从复杂到简单的一系列操作:操作可以复杂到装入一个需要时调入内存的虚拟页,或简单到扩大栈的空间. 其他需要内核更正的不寻常情况.一个例子是浮点指令:当硬件无法处理某些困难和少见的操作符和操作数的组合时,硬件会产生一个异常,寻求软件模拟.这类情况比较模糊,因为不同的对这类情况会有不同的处理意见.未对齐的装入在某些操作系统中被由软件处理,在另外一些操作系统中被当做错误. 程序或硬件检查出的错误.包括非法指令,在不正确的用户权限下执行的指令,在相应SR位被禁止时执行的协处理器指令,整数溢出,地址对齐出错,用户模式下访问超出用户段(KUSEG)地址. 数据完整性错误.很多MIPS CPU不断对来自总线和缓存的数据作字节校验或字校验.校验错在R4000及以后的CPU上产生一个特殊异常. 系统调用和陷入.某些指令只是用来产生异常.它们提供了一种进入操作系统的安全机制(系统调用,条件陷入,断点). 某些事件不产生中断,尽管大家认为它们会.比如写总线错.CPU把数据和地址放入写缓冲中,然后继续执行.写操作可能在几个时钟周期后发生.在这种情况下,很难判断到底是哪条指令产生写错误.某些系统利用外部机制来解决这个问题.这种外部机制有可能会产生异常来引起CPU注意. 更为有意思的是,在大多数32位的CPU上,缓存中的校验错不产生异常.错误被放在一个状态寄存器位SR(PE)里,你必需自己去察看它.在R3000(32位的CPU)里,缓存校验在以后加入用于调试目的. | |
《See MIPS Run》–第四章 MIPS缓存
作者 陈怀临 | 2008-05-28 15:42 | 类型 专题分析, 中国系统软件 | Comments Off
第四章 Cache for MIPS 这一章将介绍MIPS的cache怎样工作和软件应该怎么做才能使它可以被使用而且是可靠的。MIPSCPU重新启动后,cache的状态是不确定的,所以软件必须非常小心。你有一些线索知道cache的大小(如果你直接知道cache的大小后去初始化,这是一个不好的软件习惯。)。对于诊断程序员,我们将讨论怎样测试cache和获取特殊入口。 对于实时应用程序的程序员,希望在CPU运行时能够正确地控制cache。我们也将讨论怎么做,虽然我对使用一些窍门方式有怀疑。 当然这些也随着MIPSCPU的发展而进步。对于早期的32位MIPS处理器,初始化cache或者使其无效,首先让cache进入一种特殊的状态,然后通过普通的读写操作来完成。对于后来的处理器,一些特殊的指令被定义出来做这些相关的操作。 | |
《See MIPS Run》–第三章 协处理器0
作者 陈怀临 | 2008-05-23 16:02 | 类型 专题分析, 中国系统软件 | Comments Off
第三章 协处理器0: MIPS 处理器控制 为了更便于读者理解,我们会把不同的功能分成几章来介绍。这一章里我们先介绍用来实现这些特色功能的公共机制。在读后续的三章之前,您应该先读本章的前面部分,特别要注意“协处理器”(下面将有解释)一词的含义。那么, MIPS CPU 的协处理器0 (以下简称CP0 )做些什么工作呢? 配置: MIPS 硬件常常是很灵活的,您可能可以选择一些很根本的CPU 特性(例如大尾端/小尾端,参见第11章)或者改变系统接口的工作方式。这些选项的控制和可见性通常由一个(一些)内部寄存器决定。 高速缓存控制: MIPS CPU 总是集成了高速缓存控制器,(除了最古老的芯片)也都集成了高速缓存本身。连最早期的MIPS CPU 都在状态寄存器里有高速缓存控制的字段。R4000 以后,就有专门的CP0 指令来操纵高速 例外/中断控制: 象中断或者例外时发生什么,您应该做什么来处理它等事情都由一些CP0 控制寄存器和特殊指令来定义和控制。这会在第5 章讨论。 存储管理单元控制: 第6 章讨论这个话题。 杂项: 总是有更多的东西:时钟、事件计数器、奇偶校验错误检测等等。无论什么时候额外的功能被集成到CPU 里边,不再能方便地当作外设访问时,这里就要增加一些东西。 阅读全章PDF文件:《See MIPS Run》–第三章 协处理器0 | |
《See MIPS Run》–第二章 MIPS体系结构
作者 陈怀临 | 2008-05-10 20:49 | 类型 专题分析, 中国系统软件 | Comments Off
第二章 MIPS体系结构 在计算世界中, “体系结构”一词被用来描述一个抽象的机器,而不是一个具体的机器实现. 这一点非常有用的, 用来区分在市场广告上已经被滥用的”体系结构”这个术语. 读者有可能不熟悉”抽象描述”,但其概念其实很简单. 当然,如果你是一个喜欢在 滑的路上开快车的司机,前轮还是后轮驱动就很有所谓了。计算机也是如此。如果你需要高性能计算,一个计算机的具体参数与实现对你就很重要了。 一般而言,一个CPU的体系结构有一个指令集加上一些寄存器而组成。“指令集”与”体系结构“这两个术语是同义词。你经常会看见ISA(指令集体系结构–ISA)的缩写。 MIPS体系结构家族包含如下几代。每一代之间都有一些区别。 MIPS 1:32位处理器使用的指令集。仍然被广泛使用着。 上述的MIPS体系结构等级与MIPS公司提供的文档中定义的是一致的。这些文档提供了足够的信息,以使得同一个UNIX应用程序可以在不同的MIPS体系结构等级上运行,但是在操作系统或底层相关的代码方面的移植方面,显得不足。MIPS CPU其他一些软件可见的方面都是于具体CPU实现相关的。 在本书中,我将更加慷慨大方些。有时候,我会描述一个在MIPS 体系结构手册中找不到的,但却在所有MIPS III 体系结构实现中能发现的并且你会遇到的功能。 另外,除了ISA等级,大多数MIPS CPU在实现方法上分为两大类:早期的MIRS R3000和其他所有的32位MIPS CPU;另外就是已MIPS R4000为代表的64位CPU。 有不少MIPS CPU的实现加入了一些新指令和其他一些有趣的功能。对於软件或工具( 如编译器)而言,要利用这些非标准的,依赖于具体实现的功能是不容易的。 我们可以在两种细节层次上来描述MIPS的体系结构。第一种描述(本章)是在汇编语言的层次上看待你的程序,比如,你在工作站上写一个应用程序。这也意味着CPU的所有一般的计算是可见的。 在下面章节里,我们将介绍MIPS的各个方面,包括建构在CPU之上的操作系统所掩盖的所有CPU的细节,CPU控制寄存器,中断,陷入,高速缓冲操作和内存管理。至少我们会将一个CPU分成一些小部分来学习和介绍。 | |