DSP原理初步了解
目录
哈佛结构
冯诺依曼结构
程序和数据混合存储在存储器之中
冯诺依曼结构是传统的计算机体系结构
优点:
- 结构简单:指令和数据存储在同一个物理地址空间,使用单一的总线进行传输。
- 成本低:由于结构简单,相对容易设计和制造,因此成本较低。
- 兼容性:大多数通用处理器采用冯诺依曼结构,软件兼容性较好。
缺点:
- 瓶颈问题:由于指令和数据共享同一条总线,可能会造成数据传输的瓶颈。
- 性能限制:在执行指令的同时不能进行数据读取或写入,限制了性能的提升。
哈佛结构
程序和数据存储在不同存储器之中,用不同的总线取出
哈佛结构是基于冯诺依曼结构的一种改进,主要特点是指令存储和数据存储分开:
优点:
- 并行处理:指令和数据有各自独立的存储空间和总线,可以同时进行取指和数据的读取/写入操作,提高了处理速度。
- 高效流水线:流水线操作更为高效,因为指令和数据不会在总线上发生冲突。
缺点:
- 成本和复杂性:由于需要两套存储器和总线,增加了硬件的复杂性和成本。
- 兼容性:与冯诺依曼结构的软件不完全兼容,可能需要特殊的编译器或适配器。
改进的哈佛结构
程序和数据存储在不同存储器之中,用不同的总线取出
常数等不会修改的数据存储在程序存储器中
改进的哈佛结构是对传统哈佛结构的一种优化,它允许指令和数据存储器有部分重叠,或者提供更多的灵活性来优化性能,是目前市面上最常用的结构。
优点:
- 灵活性:改进的哈佛结构提供了更多的灵活性,可以根据具体的应用需求调整指令和数据的存储与访问方式。
- 性能提升:通过更高效地利用存储器和总线,可以进一步提高处理器的性能。
缺点:
- 设计复杂:相对于传统的哈佛结构,改进的哈佛结构设计更为复杂,需要更高级的硬件设计和测试。
- 成本问题:更高的设计复杂度可能导致成本增加。
分布式处埋
在普通处理器中,计算全部在算术逻辑单元ALU(Arithmetic Logic Unit)
中完成
在DSP中,除了ALU外,还有若干具有计算功能的部件。
在TMS320C54x DSP Reference Set
可见TMS320C54x DSP内部硬件框图
,如图所示
集成了大量的运算单元,进行并行运算,极大的提高了运算效率。
例如:(硬件)
1、专用硬件乘法器
- 8086/8088处理器无乘法
- 51单片机有乘法器,但乘法和加法不能同时进行
DSP
的硬件乘法器可以和ALU
并行工作而且2个操作数都可以来自存储器
2、数字滤波器、相关、卷积、FFT等的核心运算为乘累加器MAC(multiplication-accumulation)
。
DSP尤其适合完成这些运算
3、ARAU
- Auxiliary Register Arithmetic Unit
辅助寄存器算术单元
- 地址计算:用于计算内存地址,特别是在访问数组或执行其他需要索引或指针的操作时。
- 循环控制:在执行循环时,ARAU可以用来递增或递减辅助寄存器的值,以跟踪循环的迭代次数。
- 指针操作:在需要管理多个数据缓冲区或执行指针算法时,ARAU可以用来更新指针值。
- 算术运算:除了基本的递增和递减操作,ARAU可能还支持更复杂的算术运算,如加法、减法等。
多总线结构
哈佛结构 需要两套以上总线,分别对程序存储空间
和数据存储
空间进行读写操作。
TI DSP为了实现高度并行
操作,采用了更为复杂的总线结构。多总线是各种并行操作,包括pipeline(流水线)操作的基础。
Pipeline-流水线操作
一条指令的执行一般可以分为4个阶段(C3x,C4x):
Fetch——Decode——Read——Execute
取指——译码——读数操作——执行
一般来说,一条指令的各个阶段所需要的资源是不一样的,因此,如果安排得当不同指令的不同执行阶段可以同时进行。
顺序执行
并行流水线执行【4级:一个指令只需要花T/4】
eg:C54一条指令的执行过程可以分为6个阶段: prefetch
, fetch
, decode
,access
,read
, execute/write
.因此可以构成6级深度的流水线。【6级:一个指令只需要花T/6(8级同理)】
片内多块存储器
ROM (Read-Only Memory)
ROM 是只读存储器,通常用于存储不需要修改的程序代码和数据。ROM 中的数据在制造过程中被编程,之后在正常操作中不能被修改。ROM 的主要类型包括:
- Mask ROM:在制造过程中将数据永久性地嵌入到芯片中。
- PROM (Programmable Read-Only Memory):用户可以编程一次。
- EPROM (Erasable and Programmable Read-Only Memory):可以通过紫外线擦除和重新编程。
- EEPROM (Electrically Erasable and Programmable Read-Only Memory):可以电擦除和重新编程,但通常速度较慢,编程次数有限。
- Flash Memory:一种特殊的EEPROM,可以快速电擦除和重新编程,编程次数较多。
SARAM (Static Random-Access Memory)
- 单口存取随机存取存储器
- 每个存储单元由触发器组成,不需要刷新
- 直接访问触发器,提供快速的访问时间。
- 在一个时钟周期内只能进行一次存储操作。
- 每个存储位都由一个触发器保持状态,即使电源关闭,数据也会保持不变,直到被重写。
- 通常用于高速缓存存储器、微处理器的寄存器文件和其他需要快速访问的应用。
DARAM (Dual-Port Static Random-Access Memory)
- 双端口随机存取存储器
- 每个存储位由
一个电容
和一个晶体
管组成 - 因为电容会随时间放电,需要定期刷新,掉电丢失数据。
- 一个周期内可以读取和写入,可以同时进行两次存储操作。
- 在较小的空间内容纳更多的存储位,存储密度较高,但访问速度相对SARAM较慢。
- 通常用于需要大量存储的应用,如图形处理和大型数据缓冲区。
注意!!!!
- SARAM 和 DARAM 都是属于 SRAM(Static Random-Access Memory)的变体
而不是 DRAM(Dynamic Random-Access Memory)。 - SARAM:静态功耗较高,因为触发器需要持续电源;动态功耗较低,因为没有刷新操作。
- DARAM:静态功耗较低,但在动态操作(读写和刷新)时功耗较高。
灵活的寻址方式
寄存器/累加器寻址(Register addressing/Accumulator Addressing)
立即数寻址(lmmediate Addressing)
直接寻址(Direct Addressing)
间接寻址(lndirect Addressing)
位反转寻址(Bit-Reverses Addressing mode),用于FFT
循环寻址模式(Circular Addressing mode),用于卷积等运算
┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈ ┈┈┈┈▕▔╲┈┈┈┈┈┈┈┈
┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈┈┈┈┈▏▕┈┈┈┈┈┈┈ ┈
┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈┈┈┈┈▏ ▕▂▂▂▂▂┈┈┈
▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈ ▂▂▂▂╱┈┈▕▂▂▂▂▏┈┈
▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈ ▉▉▉┈┈┈┈▕▂▂▂▂▏ ┈
▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈ ▔▔▔▔╲▂▂▕▂▂▂▂▏┈┈
如果对你有帮助,点个赞呗!(。・ω・。)ノ♡