找回密码
 立即注册
楼主: 神***

向【64位超算中心】前进 ! DPU32@全新32位8051+DSP指令

[复制链接]

该用户从未签到

1

主题

122

回帖

679

积分

高级会员

积分
679
发表于 2024-3-10 12:36:13 | 显示全部楼层
还有DPU32的一些指令如果还没有C251指令集中的指令组合速度快,
这些指令就没存在的必要,别把芯片搞的太臃肿,降低了竞争力
回复 支持 反对 送花

使用道具 举报

该用户从未签到

555

主题

9656

回帖

1万

积分

管理员

积分
14143
 楼主| 发表于 2024-3-10 12:47:00 | 显示全部楼层
x51 当年是跟着 x86 的技术路线走的,
所以现在很多工科非计算机专业学微机原理,
实验机型
用的是 x51
===前面20年是 STC89C52RC,
       现正在被 STC8H/STC32G 取代

STC32内部总线是32位
Intel 251, 历史原因,为了降低成本内部总线是 8位
STC32内部总线 是 32位,这是 本质区别

===但 251的指令集32位

DPU32是1次设计,2个平台共享,STC8H/STC32G
所以 DPU32中的部分指令为了支持STC8H,就和STC32指令集部分重叠了
===等定型后再决定, 暂不删除


回复 支持 反对 送花

使用道具 举报

该用户从未签到

555

主题

9656

回帖

1万

积分

管理员

积分
14143
 楼主| 发表于 2024-3-10 12:54:04 | 显示全部楼层
截图202403101253273300.jpg

截图202403101254014358.jpg

回复 支持 反对 送花

使用道具 举报

该用户从未签到

555

主题

9656

回帖

1万

积分

管理员

积分
14143
 楼主| 发表于 2024-3-10 12:54:49 | 显示全部楼层
截图202403101254456377.jpg

截图202403101255144175.jpg

回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 157 天

    [LV.7]常住居民III

    39

    主题

    895

    回帖

    4226

    积分

    荣誉版主

    积分
    4226
    发表于 2024-3-11 07:46:46 | 显示全部楼层
    本帖最后由 LAOXU 于 2024-3-11 07:51 编辑

    【DPU32】指令(讨论稿) 更改方案 V2.0版总结


    1、专用寄存器定义更改: DR0 <--> EAX , DR4 <--> EBX , DR8 <--> ECX , DR12 <--> EDX ,
        优点: 高度保持和目前的 STC32 全兼容, STC32 的 MDU32, TFPU 占用 R0-R7(自动识别切换 BANK0/BANK1/BANK2/BANK3),
        实现和 C编译器无缝衔接。
        由于不使用全局变量, 所有DPU32 指令, 可在 OS系统中 任意使用, 除少量占用DR12 的高级指令之外, 绝大多数指令 DPU32 指令,
        在中断中 任意使用, 少量占用DR12 的高级指令, 如在中断中使用,  只需在:
        中断入口处加一条 __asm { push  DR12};
        退出中断处加一条 __asm { pop   DR12}; 即 OK
        用户使用非常易用简单方使 !


    2、 现有指令唯一重点要求:
        a. 逻辑和算术移位的所有指令, 原输入寄存器 CL, 一定要改成指定为 R11(ACC), 便于 51/251参数传递。
        b. 现在除法指令, 是32/32和16/16位的, 极不实用, 应改为 64/32和 32/16位的, DPU32指令的使用, 主要利用汇编进行。
           如不更改, 至少增加一条 无符号64位/32位除法, 否则, 通过 N条汇编指令模拟扩展位数, 效率实在太低了。


    3.  考虑今后在标准 51上使用, 应在 DPU32内增加 ECX',EDX'映像(镜像), 通过某标志位在芯片出厂前可预定义, DPU32 使用 ECX,EDX 还是 ECX',EDX',
        在 251上使用 ECX,EDX , 在标准 51上使用 ECX',EDX', 后者通过 SWAP类交换指令, 可读出/写入 ECX',EDX'内容。
        这样, 可有效避免对标准 51的 DATA(全局变量)占用, 做到【DPU32】模块 和 OS系统的高度耦合, 编写出短小精练的子程序, 提升执行速度,
        有利于综合提升整体运算速度。


    4.  考虑今后在标准 51上使用, 建议 增加 CMP比较指令(32位和16位), 执行结果同对应的 DPU32减法指令, 只是结果不回送。
    CMPX_EBAX                         CMP_EBAX                 32 位比较(CMPX_EABX)                                 Z,C = EBX - EAX
    CMPX_BAX                          CMP_BAX                  16 位比较(CMPX_ABX)                                Z,C = BX - AX


    5.  现有 3个标志位增加使用说明
        a. DBZ 标志, 加/减/比较类指令, 结果为 0时 置位。
        b. CY 标志, 所有移位类指令, 都带CY, 移入/移出位都是 CY 。



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 157 天

    [LV.7]常住居民III

    39

    主题

    895

    回帖

    4226

    积分

    荣誉版主

    积分
    4226
    发表于 2024-3-11 09:23:16 | 显示全部楼层
    【DPU32】指令(讨论稿) 更改方案 V2.1版总结

    1、专用寄存器定义更改: DR0 <--> EAX , DR4 <--> EBX , DR8 <--> ECX , DR12 <--> EDX ,
        优点: 高度保持和目前的 STC32 全兼容, STC32 的 MDU32, TFPU 占用 R0-R7(自动识别切换 BANK0/BANK1/BANK2/BANK3),
        实现和 C编译器无缝衔接。
        由于不使用全局变量, 所有DPU32 指令, 可在 OS系统中 任意使用, 除少量占用DR12 的高级指令之外, 绝大多数指令 DPU32 指令,
        在中断中 任意使用, 少量占用DR12 的高级指令, 如在中断中使用,  只需在:
        中断入口处加一条 __asm { push  DR12};
        退出中断处加一条 __asm { pop   DR12}; 即 OK
        用户使用非常易用简单方使 !

    2、 现有指令唯一重点要求:
        a. 逻辑和算术移位的所有指令, 原输入寄存器 CL, 一定要改成指定为 R11(ACC), 便于 51/251参数传递。
        b. 现在除法指令, 是32/32和16/16位的, 极不实用, 应改为 64/32和 32/16位的, DPU32指令的使用, 主要利用汇编进行。
           如不更改, 至少增加一条 无符号64位/32位除法, 否则, 通过 N条汇编指令模拟扩展位数, 效率实在太低了。

    3.  考虑今后在标准 51上使用, 应在 MDU32内增加 ECX',EDX'映像(镜像), 通过某标志位在芯片出厂前可预定义, MDU32 使用 ECX,EDX 还是 ECX',EDX',
        在 251上使用 ECX,EDX , 在标准 51上使用 ECX',EDX', 后者通过 SWAP类交换指令, 可读出/写入 ECX',EDX'内容。
        这样, 可有效避免对标准 51的 DATA(全局变量)占用, 做到【DPU32】模块 和 OS系统的高度耦合, 编写出短小精练的子程序, 提升执行速度,
        有利于综合提升整体运算速度。

    4.  考虑今后在标准 51上使用, 建议 增加 CMP比较指令(32位和16位), 执行结果同对应的 DPU32减法指令, 只是结果不回送。
    CMPX_EBAX                         CMP_EBAX                 32 位比较(CMPX_EABX)                                 Z,C = EBX - EAX
    CMPX_BAX                          CMP_BAX                  16 位比较(CMPX_ABX)                                Z,C = BX - AX

    5.  考虑今后在标准 51上使用, 建议 增加 SWAP_DPTR交换指令, 暂存 DPTR内容。
        a. 【DPU32】模块内新增专用寄存器 DPTR(8级16位阵列), DPS(仅后3位有效)。
        b. 新增指令 INC1_DPS, DEC1_DPS, DPS 加1/减1 指令, 数字在 0-7之间循环。
        c. 新增指令 SWAP_DPTR, 交换指令, DPTR <--> DPTRn @DPS, 注: @DPS(范围0-7) 间接寻址指向 DPTRn(8级16位阵列)。
        d. 新增指令 DEC1_DPTRn @DPS, 当前 DPTRn内容减1 。
        此功能相当于在【DPU32】模块内增加了 8个DPTR 软栈, 可在标准 51库函数中加入使用 DPTR双指针, 直接在 OS系统 和 中断中使用,
        不用增加额外的保护措施(压栈/弹出 DPTR), 和现有 Keil C51高度无缝耦合, 以弥补标准 51中 DPTR的缺陷。

    6.  现有 3个标志位增加使用说明
        a. DBZ 标志, 加/减/比较类指令, 结果为 0时 置位。
        b. CY 标志, 所有移位类指令, 都带CY, 移入/移出位都是 CY 。



    回复 支持 1 反对 0 送花

    使用道具 举报

    该用户从未签到

    555

    主题

    9656

    回帖

    1万

    积分

    管理员

    积分
    14143
     楼主| 发表于 2024-3-11 09:37:24 | 显示全部楼层
    感谢大家帮我们 STC 32位8051 世界,继续:
    ===添砖加瓦,拾遗补漏
    ===为 32位8051 世纪之战 而奋斗

    附件是 M4的DSP指令 介绍


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    66

    主题

    714

    回帖

    1万

    积分

    荣誉版主

    积分
    10971
    发表于 2024-3-11 13:03:40 | 显示全部楼层
    神农鼎 发表于 2024-3-10 10:46
    来锤我呀
    千锤百炼出深山,一朝得道立世间
    仰天大笑东风烈,华夏又多一国芯

    毛主席说:世上无难事,只要肯登攀。

    这次STC32G96K256的诞生必定会是单片机中国创造史上的一个里程碑事件。

    一、CORTEX-M4的DSP指令集
    CORTEX-M4是一种32位的嵌入式处理器架构,它具有一些特殊的指令集扩展,包括DSP(数字信号处理)指令集。
    这些DSP指令可以加速数字信号处理相关的计算,提高处理器的性能和效率。
    CORTEX-M4处理器的DSP指令集被称为CMSIS-DSP
    Cortex MicrocontrollerSoftware Interface Standard - Digital Signal Processing)。
    这个DSP库提供了许多信号处理函数,包括但不限于以下几个方面(每个方面被称为一个独立的指令集):
    1基本数学函数:包括加法、减法、乘法、除法等基本运算函数。
    2快速傅里叶变换FFT):用于将时域信号转换为频域信号,包括一维和二维FFT函数。
    (3冲击滤波器函数:包括FIR(有限脉冲响应)滤波器和IIR(无限脉冲响应)滤波器函数。
    (4矩阵函数:包括矩阵乘法、矩阵转置、矩阵求逆等矩阵运算函数。
    (5向量函数:包括向量加法、向量减法、向量乘法等向量运算函数。
    (6统计函数:包括均值、方差、协方差等统计计算函数。
    (7)数字滤波器函数:包括低通滤波器、高通滤波器、带通滤波器等数字滤波器函数。
    (8均衡器函数:用于音频均衡器的设计和实现。
    (9声音处理函数:包括音频编解码、音频特效处理等声音处理函数。
    CORTEX-M4DSP指令集需要硬件上的支持,依赖其片上的硬件DPU32/64以下几个方面的功能:
    1整数乘法和累加指令MAC):用于执行乘法和累加操作,常用于滤波、卷积等数字信号处理算法。
    2饱和运算指令:用于处理溢出情况,确保计算结果在指定范围内。
    3浮点数矢量处理FVP)指令:用于高效地执行傅里叶变换操作,常用于频域分析和信号处理。
    4位操作指令:包括位移、位扩展、位反转等操作,用于位级运算和数据处理。

    二、STC单片机的DSP发展之路
    (1)一旦STC32G96K256问世,首先其DPU32具备了M4的绝大部分的整数乘法和累加指令(MAC)、浮点数处理(FP)指令、位操作指令这已经是一个很好的DSP库硬件基础了,其余的可以再逐渐增加
    (2)STC32G96K256的32K EDATA和64K XDATA数据空间已经可以支持一定规模的科学数据处理了,加上片上的ADC等设备,已经可以进行一定规模的数据采集、图像处理和音频流、视频流处理了这就为建立DSP库提供了实验和开发条件
    (3)从现在开始专门按专题建立STC32位单片机DSP指令集用我那个年代的术语是建立STC32位单片机DSP专题数学库):
    1)首先建立基本数学函数DSP指令集,比如三角函数。这实际上是改造C251的基本函数库,继续将C251作为STC32位单片机的主流编译器
    2)其次建立统计函数、冲击滤波器函数、数字滤波器函数、均衡器函数和声音处理函数这几个DSP指令集。这实际上是为STC32位单片机上的ADC、DMA、IIS等开发应用标准库,为STC用户提供规范支持和逐渐建立STC DSP生态打下基础
    3)然后建立向量函数、快速傅里叶变换、矩阵函数等DSP指令集。
    (4)在建立基础DSP指令集的同时,从语音识别开始,探索STC32位单片机的将DSP用于AI之路

    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    4 天前
  • 签到天数: 70 天

    [LV.6]常住居民II

    4

    主题

    38

    回帖

    198

    积分

    注册会员

    积分
    198
    发表于 2024-3-11 22:55:18 | 显示全部楼层
    有个问题,如果DSP开发出来,后续STC官方也有可能会直接推出“lib”格式的封装库,我想问的是,后续会不会推出源码形式的文件(比如“*.s”)以及教程,方便爱好者跟着学汇编搞定DSP库?
    STC存在的意义?
    凡夫俗子也能创造弑神诛仙的奇迹。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    555

    主题

    9656

    回帖

    1万

    积分

    管理员

    积分
    14143
     楼主| 发表于 2024-3-11 23:41:19 | 显示全部楼层
    这些都在论坛大家一起开发
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-30 04:27 , Processed in 0.071916 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表