MIPS 体系结构相关文集汇编

来自Jack's Lab
跳转到: 导航, 搜索

Mips-arch-header.jpg


本页汇总有 Jack Tan(谭大杰) 近年所撰写的与 MIPS 体系结构相关的文章,多数为技术总结。


目录

1 已发布的 PDF 文档

MIPS Linux 异常中断代码分析 文档,涵盖中断、系统调用部分,当前版本 2007-04-12

MIPS TLB 结构和代码分析 文档,涵盖 MIPS 存储管理,当前版本 2008-03-23

MIPS Cache 结构和代码分析 文档,涵盖 MIPS Cache 的方方面面,2008-05-30


龙芯2E体系结构概述,当前版本 2007-03-16

龙芯2E体系结构与汇编语言编程文档,当前版本 2007-03-28

龙芯2E多媒体编程简述,当前版本 2007-04-05

龙芯2E多媒体指令分析、测试文档,当前版本 2007-04-05



2 MIPS64 体系结构

64位多核 MIPS 异常和中断结构

64位多核 MIPS 异常和中断内核代码分析 (1)

64位多核 MIPS 存储管理结构 (TLB)



3 Kernel Patch

linux kernel 2.6.17 for godson patch 基于龙梦提供的2.6.14,2006-12-15

Supporting unaligned access in godson2 platform, 2007-05-15

Supporting oprofile in godson2e platform 2007-05-25

kernel patch for correct pgdir shift in 16K page size 2007-07-20



4 典型多核MIPS

4.1 XLR732

XLR 系 RMI (Raza Microelectronics, Inc) 于 2005 年推出的多核多线程处理器,主要面向高端的通信和网络应用。

同样的,RMI,fabless 也。下图是 XLR 8 核版本 (XLR732/532) 的一个框图:

Mips-xlp732-arch.png

XLR732 含 8 个 MIPS64 R1 的核,

每核为单发射定序 10 级流水线 (Single In-order Issue),分支预测方面,其具有 2K 项的 G-share table 以及 8 项返回地址栈 (Return Address Stack), 实现 4 个硬件线程,且具有 64KB 的 L1 Cache (32KB D-Cache, 32KB I-Cache)。单核具有 64 个 TLB 项,可配置为每个线程各用 16 项,且互不干扰。



4.2 Tilera 64

Tile64 是由美国 Tilera 公司设计的 64 核的 MIPS。这个 Tilera 是一个 fabless。

Tile64 瞄准通用和高端嵌入式领域,主要面向网络、视频和电信应用。第一代发布于 2007 年 8 月

Mips-tilera-arch.png

64 个核通过片内 Mesh 网络 (Tilera's iMesh) 互联,各核皆通过自身的非阻塞 switch 连入 Mesh 网。Mesh 的互联带宽可达 31 Tbps

与一般的多核 MIPS 实现不同, Tile64 的每个核都有 L2 Cache。

核内采用顺序 (In-order) 3 发射 (three-issue) 短流水线,实现 MIPS-derived VLIW 指令集。

整个性能可以到 443 billion operations per second (BOPS)

片内还集成有 4 个 DDR2 控制器,2 个 10GbE XAUI MAC/PHY,2 个 4x PCI-E,2 个 GbE MAC,1 个 Flexible I/O 接口。

I/O 的带宽能达到 50Gbps

操作频率 500MHz ~ 866MHz。

700MHz 时所有核都跑有应用的情形下,功耗是 11 ~ 22W。这个有点牛 B 了,平均每个核的功耗是 0.34375W


ISA feature

Tilera ISA 面向 video 和 network 应用,可看作是 RISC 和 DSP 的混合体

VLIW, 指令束长 64bit,最多可放 3 条指令

64 个 32bit User Level Register
Register Name       Purpose
r0-r52              General Purpose
tp                  Thread Pointer
sp                  Stack Pointer
lr                  Link Register
sn                  Static Network
io0-io1             IDN Ports 0-1
us0-us3             UDN Ports 0-3
zero                Read As Zero




5 相关分析、总结笔记

现代 CPU 中的 Cache 结构 原文2011-04-14发表于弯曲评论,现转移到 WIKI 里维护


MIPS Linux 最初启动流程 原文整理于 2007-12-20 22:19,发表于个人的百度空间,现转移到 WIKI 里维护

MIPS Linux SMP 启动流程 原文整理于 2007-12-27 22:44,发表于个人的百度空间

MIPS Linux O32 之间接系统调用 原文整理于 2010-04-13 21:03,发表于个人的百度空间

MIPS Linux 下添加系统调用 原文整理于 2007-09-06 09:57,发表于个人的CSDN空间


MIPS Linux 上下文切换分析笔记 原文整理于 2008-01-10 21:26,发表于个人的CSDN空间

MIPS Linux 存储管理分析札记 原文整理于 2008-01-10 21:25,发表于个人的CSDN空间

MIPS 下非对其访问问题 原文整理于 2007-07-31 14:37,发表于个人的CSDN空间

使用 oprofile 分析性能瓶颈 原文整理于 2007-09-06 10:31,发表于个人的CSDN空间


MIPS Linux 内核页表隐性 Bug 分析与修复 原文整理于 2007-10-11 13:59,发表于个人的CSDN空间

MIPS Linux PCI 调试技巧 原文整理于 2010-03-05 11:20,发表于个人的百度空间


Using Watchpoints register to monitor momery access on MIPS 原文整理于 2007-12-20 23:23,发表于个人的百度空间

Dump the MIPS TLB refill handler 原文整理于 2009-03-02 22:07,发表于个人的百度空间


MIPS 缓冲区溢出 原文整理于 2009-08-31 19:56,发表于个人的百度空间


精确异常与非精确异常

分支延迟槽


浮点标准 IEEE754 精要

内存容量自动识别



6 外设及其他

UART 体系结构

PCI 结构概述

IA32 SSE3 精要

ARM 内核crash示例

MTD

Linux 下绑定进程到 CPU

终于让异构多核各跑了一个Linux

MIPS



个人工具
名字空间

变换
操作
导航
工具箱