我有一台旧电脑。
我想准确地计算它的处理器的MIPS(每秒百万条指令)和DMIPS。
我该怎么做?
我有一台旧电脑。
我想准确地计算它的处理器的MIPS(每秒百万条指令)和DMIPS。
我该怎么做?
bits 16
org 0x7c00
ITERS equ 1000000
jmp 0x0000:start
start:
cli
xor ax, ax
mov ds, ax
mov ss, ax
mov sp, stack_end
rdtsc
mov [old_rdtsc], eax
mov [old_rdtsc+4], edx
mov eax, ITERS
.loop:
add ebx, ecx
add ecx, edx
sub eax, 1
jnz .loop
rdtsc
sub eax, [old_rdtsc]
sbb edx, [old_rdtsc+4]
mov si, 15
.fillbuf_eax:
mov edi, eax
shr eax, 4
and di, 0xf
mov bl, [hex_chars+di]
mov [str_buf+si], bl
sub si, 1
cmp si, 7
ja .fillbuf_eax
.fillbuf_edx:
mov edi, edx
shr edx, 4
and di, 0xf
mov bl, [hex_chars+di]
mov [str_buf+si], bl
sub si, 1
jns .fillbuf_edx
mov ah, 0xe
xor bx, bx
.bios_write:
pusha
mov al, [str_buf+bx]
int 10h
popa
add bx, 1
cmp bx, 16
jb .bios_write
sti
.halt:
hlt
jmp .halt
hex_chars db "0123456789ABCDEF"
old_rdtsc resq 1
str_buf resb 16
STACK_SIZE equ 200
stack resb STACK_SIZE
stack_end equ $
times 510-($-$$) db 0x90
db 0x55, 0xaa
0x1e8596
的结果,这相当于 2000278 CPU 时钟周期。由于 CPU 运行频率为 1466MHz,因此大约相当于 1.36 毫秒。get start time.
add two numbers million times <- repeat this N times, N >= 1
get end time.
MIPS = (end time - start time) in seconds / N.
这里找到了套件(用C语言编写,包含整数和浮点数)。
要获取Dhrystone mips的得分,您需要运行Dhrystone套件,并将得分除以1757。
在http://en.wikipedia.org/wiki/Instructions_per_second上可以找到按处理器类型和特定GHZ列出的MIPS列表。
否则,您可以编写基准测试并运行它(在没有太多运行的控制台中),或者从某个地方下载基准测试并运行它......