LAOXU
发表于 2024-3-16 07:37:02
重要提示:
在 C51环境下, 一定要支持 C251 source模式指令集 !!!
只有这样, 才能彻底提升 STC51 综合性能.
我估算了一下, 在不提升主频情况下, RAM读写速度可提升 1.5倍, 浮点运算速度提升 2倍以上(不使用 TFPU的情况下),
并且支持 C251的标准库函数(改写,重编译后即可), 解决原 C51的标准库函数(不可重入)的问题, 更适应 OS系统.
尽管在 C51环境下, 表现比 C251环境下差一些, 但是, 彻底解决了标准 51的通病:
单 DPTR, 读写速度慢, SP指针 8位, 应用范围受限, 8位指令集计算能力有限.....
神农鼎
发表于 2024-3-16 07:47:28
STC8051H 研发进展,2024/3/7,研发会议
管脚兼容天王级别的: STC89C52RC, STC12C5A60S2
===最后版图优化阶段,2周内流片生产
双核心设计:
你用 SDCC/IAR C++/KEIL C51 他就是 8位机
===烧录时选择 STC8051H-8Bit
你用 KEIL C251 他就是 32位机
===烧录时选择 STC8051H-32Bit
大家辛苦安装一次其实熟悉的 Keil C251 编译器
===他就是32位 8051
LAOXU
发表于 2024-3-16 07:55:10
神农鼎 发表于 2024-2-25 15:19
双核心设计:
你用 SDCC/IAR C++/KEIL C51 他就是 8位机
你用 KEIL C251 他就是 32位机
在 C51 环境下, 仅开放 C251 source模式指令集 即可, 地址总线 依旧是 16位地址(不是 C251 模式下的 24位) !!!
以便更好的嵌入 C51编译环境中, 提升整个 STC51 综合性能.
否则, STC51 8位机 还是 8位机, 仅靠 外挂 IP核(运算模块), 提升力度有限.
比如 RAM读写效率低速度慢 等现像, 依旧保持原样没解决.
LAOXU
发表于 2024-3-16 08:09:00
在 C51 环境下,
用宏定义的伪 C251 source模式汇编指令集 已完成测试,
可无缝嵌入 ASM51汇编中使用,
只等 STC8051H 正式上线, 就能移植各种 C251标准库函数,
提升整个 STC51 8位机的综合性能.
Snapdragon
发表于 2024-3-16 11:09:11
神农鼎 发表于 2024-3-16 07:47
STC8051H 研发进展,2024/3/7,研发会议
管脚兼容天王级别的: STC89C52RC, STC12C5A60S2
===最后版图优化 ...
两周内流片,大概啥时候可以零售。会不会上架积分商城?
jwd
发表于 2024-3-16 17:28:59
LAOXU 发表于 2024-3-16 08:09
在 C51 环境下,
用宏定义的伪 C251 source模式汇编指令集 已完成测试,
可无缝嵌入 ASM51汇编中使用,
{:4_250:}
LAOXU
发表于 2024-3-17 06:36:12
关于 STC32IP核 目前存在的问题:
STC51IP核有 3个构架, L0,L1,L2
经测试, STC32 在小模式下(即使用 DPTR指针), 不能正常运行, 数据出错.
经查验, 是 STC32 内部寻址全部使用 4字节 指针(即 DPTR 受 DR56最高 2字节影响).
所有的 DPTR寻址, 实际上是完整的 DR56(4字节)寻址.
在 C251 编译器环境下, 或许没问题(不使用 2字节指针), 但用在 C51 编译器环境下, 就有问题了(C51 仅支持2字节指针 DPTR寻址)
依设计思路的连续性(没人指出的设计BUG, 下次设计依然存在)
因此, 请设计核查, 在 C51编译器环境下, 要保证 P_SW2.7置1时, 所有的 DPTR寻址, 低端对片内XRAM寻址, 高端对XFR寻址(这两部分高位地址的映像要组合在一起).
要保证 EXTRAM置1时, 所有的 DPTR寻址(只对片外XRAM寻址), 达到和 现有 STC51全兼容, 不能受控于 DR56最高 2字节.
在 C51 编译器环境下, 仅开放 C251 source模式指令集 即可, 其他依旧, 保持不变.
这样, 才能在 C51 编译器环境下, 有效支持 C251 source模式指令集, 整体提升 STC51 执行效率及速度, 提高 STC51 产品竞争力.
LAOXU
发表于 2024-3-17 06:48:26
假如不做到以上这一条, 51还是 51, 只能依靠外挂 IP核(运算模块), 提升 51性能有局限性.
远远不及 运行 C251 source模式指令集, 带来的全方位整体提升效果.
LAOXU
发表于 2024-3-17 16:07:35
目前 STC51IP核有 3个构架, L0,L1,L2
个人理解为 L0 为标准 51核,
L1 为 251 source模式 251核,
L2 为 251 binary模式 251核,
同样的 C测试代码, 估算如下:
L0: 假如 经 C51编译, 同等主频下, 代码长度 和 执行速度 都是基准 1,
L1: 经 C251编译(source模式), 代码长度约 1.5-1.8倍, 执行速度约提升 1.7-2.3倍,
L2: 经 C251编译(binary模式), 代码长度约 1.3-1.6倍, 执行速度约提升 2.0-2.6倍,
特列:
L1: 经 C51编译(使用251 source模式), 代码长度约 1.1-1.3倍, 执行速度提升约 1.5-1.8倍.
LAOXU
发表于 2024-3-17 17:47:24
这是 C51所带的 标准库函数 存储器拷贝函数 memcpy,又臭又长 {:lol:}
COPY_DATA_DATA:
MOV A,@R1
INC R1
MOV @R0,A
INC R0
DJNZ R7,COPY_DATA_DATA
SJMP COPY_END1
COPY_DATA_PDATA:
MOV A,@R1
INC R1
MOVX @R0,A
INC R0
DJNZ R7,COPY_DATA_PDATA
SJMP COPY_END1
COPY_DATA_XDATA:
MOV DPL,R0
MOV DPH,R4
COPY_IX_001:MOV A,@R1
INC R1
MOVX @DPTR,A
INC DPTR
DJNZ R7,COPY_IX_001
SJMP COPY_END1
COPY_PDATA_DATA:
MOVX A,@R1
INC R1
MOV @R0,A
INC R0
DJNZ R7,COPY_PDATA_DATA
SJMP COPY_END
COPY_PDATA_PDATA:
MOVX A,@R1
INC R1
MOVX @R0,A
INC R0
DJNZ R7,COPY_PDATA_PDATA
SJMP COPY_END
COPY_PDATA_XDATA:
MOV DPL,R0
MOV DPH,R4
COPY_PX_001:MOVX A,@R1
INC R1
MOVX @DPTR,A
INC DPTR
DJNZ R7,COPY_PX_001
SJMP COPY_END
COPY_XDATA_DATA:
MOV DPL,R1
MOV DPH,R2
COPY_XI_001:MOVX A,@DPTR
INC DPTR
MOV @R0,A
INC R0
DJNZ R7,COPY_XI_001
SJMP COPY_END
COPY_XDATA_PDATA:
MOV DPL,R1
MOV DPH,R2
COPY_XP_001:MOVX A,@DPTR
INC DPTR
MOVX @R0,A
INC R0
DJNZ R7,COPY_XP_001
COPY_END1:SJMP COPY_END
TAB_001: SJMP COPY_PDATA_PDATA
SJMP COPY_END
SJMP COPY_PDATA_DATA
SJMP COPY_PDATA_XDATA
SJMP COPY_CODE_PDATA
SJMP COPY_END
SJMP COPY_CODE_DATA
SJMP COPY_CODE_XDATA
SJMP COPY_DATA_PDATA
SJMP COPY_END
SJMP COPY_DATA_DATA
SJMP COPY_DATA_XDATA
SJMP COPY_XDATA_PDATA
SJMP COPY_END
SJMP COPY_XDATA_DATA
SJMP COPY_XDATA_XDATA
COPY_CODE_XDATA:
MOV DPL,R1
MOV DPH,R2
MOV A,R4
MOV R2,A
COPY_CX_001:CLR A
MOVC A,@A+DPTR
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
MOVX @DPTR,A
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
DJNZ R7,COPY_CX_001
DJNZ R6,COPY_CX_001
SJMP COPY_END2
COPY_CODE_DATA:
MOV DPL,R1
MOV DPH,R2
COPY_CI_001:CLR A
MOVC A,@A+DPTR
INC DPTR
MOV @R0,A
INC R0
DJNZ R7,COPY_CI_001
COPY_END: MOV A,R4
MOV R2,A
COPY_END2: MOV R1,B
MOV A,R5
MOV R3,A
RET
COPY_XDATA_XDATA:
MOV DPL,R1
MOV DPH,R2
MOV A,R4
MOV R2,A
COPY_XX_001:MOVX A,@DPTR
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
MOVX @DPTR,A
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R4
XCH A,DPH
XCH A,R4
DJNZ R7,COPY_XX_001
DJNZ R6,COPY_XX_001
SJMP COPY_END2
COPY_CODE_PDATA:
MOV DPL,R1
MOV DPH,R2
COPY_CP_001:CLR A
MOVC A,@A+DPTR
INC DPTR
MOVX @R0,A
INC R0
DJNZ R7,COPY_CP_001
SJMP COPY_END
?C?COPY:
MOV B,R0
MOV A,R7
JZ $+3
INC R6
ORL A,R6
JZ COPY_END
// MOV B,R0
MOV A,R5
ADD A,#0x02
CJNE A,#0x04,$+3
JNC COPY_END
MOV DPL,A
MOV A,R3
ADD A,#0x02
CJNE A,#0x04,$+3
JNC COPY_END
RL A
RL A
ORL A,DPL
RL A
MOV DPTR,#TAB_001
JMP @A+DPTR