当前位置:首页 > 作文大全 >

高性能16位微处理器IP软核设计

发布时间: 2022-03-18 08:31:31 浏览:

摘要:在对标准Intel 8086微处理器进行分析的基础上,本文介绍了一种与其指令集兼容、性能大幅提高的可重用16位微处理器IP软核的设计。从处理器体系结构的划分,到指令集的设计以及处理器内部各单元的设计,进行了比较详尽的阐述,并对该设计进行了软件仿真和硬件验证。该处理器采用缩短指令执行时钟周期、增加指令预取队列、改进总线接口时序和减少有效地址计算时间等系统架构的优化,使性能得到大幅度的提高;通过扩展指令集实现与标准8086、8088、80186和80188系列微处理器完全软件兼容。

关键词:微处理器;8086;IP

中图分类号:TP368.1

1 引言

随着超大规模集成电路(VLSI,Very Large Scale Integrated circuites)工艺的发展,集成电路的集成度按摩尔定律所预言的速度不断增长。进入深亚微米以后,所面临的挑战是设计能力如何跟上芯片设计复杂度的增长步伐,以及如何满足激烈的市场竞争对产品上市时间越来越苛刻的要求。片上系统(SoC,System on a Chip)设计技术就是将系统的全部功能模块集成到单个半导体芯片上,包括CPU、I/O接口、存储器以及一些重要的模拟电路。基于知识产权(IP,Intellectual Property)核的SOC设计运用重用设计思想,极大地降低了设计成本,缩短了开发周期,已经成为当今集成电路设计的主流,而各种知识产权核的实现则是SOC设计的关键。

在各种IP中,微处理器(MPU,Micro Processor Unit)占有很重要的地位,它和微控制器(MCU,Micro Controller Unit)共同构成了微计算机技术的两大分支。几乎在所有的系统应用中,都以微处理器为核心。作为一代16位微处理器,Intel 8086CPU以其经典的体系结构,在计算机的发展史上具有标志性的地位。本文所设计的A8086与标准Intel 8086指令集相兼容,采用缩短指令执行时钟周期、增加指令预取队列、改进总线接口时序和减少有效地址计算时间等系统架构的优化,使性能得到大幅度的提高;并通过扩展指令集实现与标准8086、8088、80186和80188系列微处理器完全软件兼容。本文设计的CPU IP软核可直接应用于高速、低功耗SOC芯片设计中。

2 A 8086体系结构

A 8086与标准Intel 8086均为一种冯·诺伊曼结构(也称普林斯顿结构,是一种将程序存储器和数据存储器合并在一起的存储器结构)的复杂指令集(CISC,Complex Instruction Set Computing)微处理器[1]。A 8086体系结构如图1所示。

图1 A 8086体系结构

A 8086CPU由总线接口单元(BIU,Bus Interface Unit)和指令执行单元(EU,Execution Unit)组成,二者并行操作。总线接口单元完成取指令,读操作数,送结果,通过包括数据总线、地址总线和控制总线的3总线结构,完成所有与外部的操作。而指令执行单元从BIU的指令队列中取出指令,并且执行指令,不必访问内存和I/O端口,也是由EU向BIU发出访问所需要的地址,在BIU中形成物理地址,然后访问内存或I/O端口,取得操作数送到EU,或送结果指定的内存单元或I/O端口。BIU和EU这种并行工作方式,也可被看作是2级流水线操作,大大提高了系统工作效率。

3 指令集设计

微处理器的核心功能是对指令的执行,所以微处理器的设计基础是指令集的设计。A 8086的指令集设计与标准Intel 8086相兼容,同时也包含了80186的指令,通过指令集的扩展实现与标准8086、8088、80186和80188系列微处理器完全软件兼容[2]。

3.1 指令类型

指令类型参考Intel 8086的指令集设计原则,所有指令的运算都在寄存器中进行。当需要和内存交换数据的时候,通过内存访问指令进行内存和寄存器的数据交换,保证CPU能够完成程序中经常使用的指令操作。A 8086的指令集按照功能分成6种类型:数据传送指令、算术运算指令、逻辑运算和移位指令、字符串处理指令、控制转移指令以及处理器控制指令。

3.2 指令机器码

A 8086指令的机器码在设计时采用层次化的方法,将不同类型和功能的指令分别进行编码,映射到操作码和功能区中。指令机器码由于其格式设计十分规整,所以在硬件上更加容易实现,也提高了处理器的速度,便于采用新的技术,同时,具有很好的扩展性。当需要指令扩展时,可以根据指令类型方便的添加新指令到相应的编码区域中,进行指令集的完善。A 8086指令的机器码格式,如图2所示。

A 8086的指令长度为1~6字节。其中,字节1和字节2包含指令的各项编码;字节3和字节4分别是低位位移和高位位移;字节5和字节6分别是低位数据和高位数据。在这些编码中,操作码确定该操作是哪一条指令。D确定寄存器操作数是源还是目的;W确定是字节指令还是字指令;REG确定寄存器操作数;MOD和R/M确定寻址方式。

图2 A8086指令的机器码格式

3.3 寻址方式

寻址方式是指令中说明操作数所在地址的方法。操作数可以存放在寄存器和内存中,它们也可以是立即数。因此A 8086支持立即数寻址,寄存器寻址和内存寻址。访问1M字节的内存空间,需要20位的物理地址,计算方法是:物理地址=段基址×16+有效地址。有效地址(EA,Effective Address)是指从段基址开始的段内相对偏移位置。为了灵活地在内存空间寻址,采用各种不同的方式计算EA,因此内存寻址方式又分为直接寻址(D16)、寄存器间接寻址(基址或变址)、寄存器相对寻址(基址+变址)、基址变址寻址(基址或变址+位移)、相对基址变址寻址(基址+变址+位移)。

4 A 8086内部单元设计

在完成指令集设计的基础上,按照自顶向下的数字系统设计流程,进行A 8086内部各单元的设计。首先划分与定义CPU核各层次模块的结构和功能,然后用Verilog硬件描述语言实现CPU核数据通道和控制器各个模块的寄存器传输级(RTL,Register Transfer Level)描述。A 8086在实现标准Intel 8086功能的基础上,进行了一系列优化设计,因此与Intel 8086相比,A 8086微处理器的整体性能得到很大的提高。

在时序方面,A 8086CPU核采用单相时钟全局同步设计。虽然芯片面积有所增加,但降低了设计的复杂度,减少了生产工艺不确定性对系统性能的影响,提高了设计的成功率。

4.1 数据通道设计

数据通道决定时钟周期且占据相当大的芯片面积,是影响微处理器性能和面积的主要因素。通过分析完成每条指令操作所需要的元件来构建数据通道,将A 8086CPU的数据通道分为指令预取队列、算术逻辑单元(ALU,Arithmetic Logic Unit)、通用寄存器组、标志寄存器、地址加法器、段寄存器组、指令指针寄存器、指针和变址寄存器等功能单元。

在控制信号的作用下,数据通道的各功能单元分别完成各自的作用。其中,指令预取队列存放等待执行的指令;ALU完成8位或16位的二进制算术运算和逻辑运算;通用寄存器组存放参加运算的数据、中间结果或地址;标志寄存器存放ALU运算结果的特征,用作后续条件转移指令的转移控制条件;地址加法器完成段基址和有效地址的加法操作,形成访问内存所需要的20位物理地址;段寄存器组存放段基址;指令指针寄存器存放将要执行的下一条指令在现行代码段中的有效地址;指针和变址寄存器存放段内地址偏移量,用于堆栈操作和变址运算。

与标准Intel 8086相比,A 8086数据通道的设计在以下方面性能有所优化:兼容1M和16M字节内存寻址空间;指令预取队列增加到8个字节;兼容8位和16位外部数据总线。

1) 内存寻址空间

A 8086和标准Intel 8086都支持1M字节的内存寻址空间,此时地址总线配置为20条。与Intel 8086不同的是,A 8086在其可以选择的工作模式中,能够将地址总线配置为24条,可寻址16M字节的内存空间,寻址能力得到一个数量级的提高。24位物理地址的计算方法是:物理地址=段基址×256+偏移地址,如图3所示。

图3 24位物理地址的计算方法

2) 指令预取队列

标准Intel 8086的指令预取队列可存储6个字节指令代码,而A 8086的指令预取队列则增加到8个字节。当指令队列有4个或4个以上的字节空余时,总线接口单元自动将指令取到指令队列中。这样提高了CPU执行指令的效率和处理数据的能力。

3) 外部数据总线

A 8086和标准Intel 8086都提供16位外部数据总线,此时外部数据总线配置为16条。与Intel 8086不同的是,A 8086在其可以选择的工作模式中,能够将外部数据总线配置为8条,指令预取队列也相应地减少到4个字节,从而实现与Intel 8088和80188系列微处理器兼容[3]。

4.2 控制器设计

控制器负责控制数据通道中各功能单元协调工作。根据数据通道的划分,将A 8086CPU的控制器分为BIU控制器、指令译码控制器、EU控制器、运算器控制器和寄存器控制器。其主要功能是以当前指令、外部总线的控制信号、各种运算的结果和标志位为输入,进行译码和分析,确定指令的操作及相应的控制信号和时序,送到数据通道各部件、内存和外围设备,从而控制数据在寄存器、内存、I/O设备间进行交换,以及ALU进行指定的运算。

与标准Intel 8086相比,A 8086控制器的设计在以下方面性能有所优化:有效地址计算时间减少到1~4个时钟周期;兼容3个和4个时钟周期总线接口时序以及重复串操作指令的中断屏蔽能力。

1) 有效地址计算时间

表1 计算EA所需时钟周期

CPU指令的执行速率由晶振控制产生的时钟决定,每条指令的执行都需要若干个时钟周期。如果指令执行的过程中需要内存寻址,则需要计算有效地址,那么该指令执行时间还要包括计算EA的时间,寻址方式不同,计算EA所需的时间也不一样。在标准Intel 8086中,计算EA需要5~12个的时钟周期。A 8086通过对执行单元状态机的优化设计,将计算EA所需的时间减少到1~4个时钟周期,这很大程度上提高了指令的执行效率[4]。A 8086和Intel 8086计算有效地址所需时钟周期,如表1所示。

图4 3个时钟周期的读总线接口时序

2) 总线接口时序

A 8086和标准Intel 8086都支持包含4个时钟周期的总线接口时序。与Intel 8086不同的是,A 8086在其可以选择的工作模式中,支持包含3个时钟周期的总线接口时序。基于更快的指令执行时钟周期和有效地址计算时间,A 8086优化了读写操作时序,将4个时钟周期的总线接口时序压缩为3个,使CPU读写内存和I/O端口的能力比Intel 8086有很大的提高。3个时钟周期的读总线接口时序,如图4所示。

3) 中断屏蔽

在标准Intel 8086中,带有重复前缀的串指令执行时间可能很长,因此在指令执行过程中允许有中断进入。在处理每个元素前都查询是否有中断请求,一旦外部有中断进入,CPU将暂停执行当前的串操作指令,转去执行相应的中断服务程序,中断服务完成后,再返回去继续执行被中断的重复串操作指令[5]。

由于A 8086的指令执行效率与Intel 8086相比有很大提高,带有重复前缀的串指令执行时间也随之大大缩短,所以在指令执行过程中不允许有中断进入。如果有中断请求,必须等重复串操作指令执行完毕后,CPU才能响应中断。这样重复串操作指令可以完整地执行,不受外部中断的影响。

5 仿真与验证

A 8086微处理器的结构与功能设计只是全部设计流程的一部分,为保证最终设计的成功,必须对其进行全面的软件仿真与硬件验证。从最初的行为级、寄存器传输级、直至门级,都是不断地重复编写Verilog源代码、编译、仿真、修改设计以及修正错误的过程。仿真验证是一项繁重而单调的工作,尽管各EDA厂商都提供了较为方便的仿真工具,在一定程度上提高了效率,但仍有潜力可挖。通过对仿真和测试过程的分析,发现只有尽量多地利用Verilog硬件描述语言自身的功能,实现对设计的测试与验证,才能最大限度地减小测试工作对EDA工具平台的依赖性,保持设计工作的一致性和可移植性,提高设计效率。

图5 无条件转移指令JMP仿真波形

为了测试CPU IP核的功能,用汇编语言设计了一个测试向量程序,里面包含单个指令、指令组合、典型程序段等多种形式的程序,遍历了所有指令。以完成短段内直接转移操作的无条件转移指令JMP为例,标准Intel 8086执行该指令需要15个时钟周期,A 8086执行该指令只需8个时钟周期,性能提高了近1倍。无条件转移指令JMP仿真波形如图5所示。

借助EDA工具Mentor公司的Modelsim仿真器,完成RTL级功能仿真,使用Synplicity公司的Synplify综合工具进行逻辑综合,在Altera公司Quartus II集成设计环境中,最终完成CPU核的布局、布线及时序仿真,并将结果下载到Cyclone II系列FPGA开发板上进行硬件验证,CPU能够稳定地运行,结果证明设计达到了预定的性能要求。

6 结束语

IP软核由Verilog硬件描述语言写成,可读性好,可以根据用户条件进行修改,能够与任何综合库、工艺库以及FPGA结合开发出用户需要的产品,因此易于推广使用。另外,IP软核易于升级,具有很好的可持续发展性。从IP软核入手,可以建立包括软核、固核和硬核在内的完整IP库。

本文中高性能16位微处理器IP软核的设计,解决了微处理器的高层语言描述以及自顶向下设计的相关技术,由于其性能比标准Intel 8086有明显的提高,可以应用在多种对处理器性能有较高要求的系统芯片中,从而提高设计的效率和质量,缩短产品的开发周期,使极大规模的系统芯片设计更加方便快捷。通过该处理器的设计,为以后进行SOC芯片中的处理器设计积累了经验。

参考文献

[1]8086 16-Bit HMOS Microprocessor[M].USA:Intel Corporation,1990:1-7.

[2]80186/80188 High-Integration 16-Bit Microprocessor[M].USA:Intel Corporation,1994:27-32.

[3]8088 8-Bit HMOS Microprocessor[M].USA:Intel Corporation,1990:14.

[4]唐长钧,赵正校,朱煜清.Intel8086微处理器[M].上海:上海交通大学微机研究所,1986:13.

[5]吴秀清,周荷琴.微型计算机原理与接口技术[M].第三版.合肥:中国科学技术大学出版社,2004:95.

作者简介

李洋,合肥工业大学硕士研究生,研究方向为超大规模集成电路设计。

注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”

相关热词搜索: 微处理器 高性能 设计 IP

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号