Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2014-01

Re: Improving i8086 performance..

3 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Max Nazhalov
Show quoted text 11 lines
Date: Tue, 31 Dec 2013 19:42:44 +0200 From: Nikolay Nikolov I got my PSU fixed and now I have results from my 10 MHz PS/2 Model 30 286: 32pas: ticks = 814 32asm: ticks = 30 ~27x faster 64pas: ticks = 1130 64asm: ticks = 30 ~38x faster

Thanks for follow-up, Nikolay!
I'm still looking for performance bottlenecks of the current float<->ascii conversion. Can You run the attached benchmark to make it clear how the uint32|uint64 multiplication affects this?

Thanks! WBR, Max.

Reply by email

Nikolay Nikolov
to Max Nazhalov
Max Nazhalov wrote 13 lines
> Date: Tue, 31 Dec 2013 19:42:44 +0200 > From: Nikolay Nikolov > > I got my PSU fixed and now I have results from my 10 MHz PS/2 Model 30 286: > 32pas: ticks = 814 > 32asm: ticks = 30 > ~27x faster > > 64pas: ticks = 1130 > 64asm: ticks = 30 > ~38x faster Thanks for follow-up, Nikolay! I'm still looking for performance bottlenecks of the current float<->ascii conversion. Can You run the attached benchmark to make it clear how the uint32|uint64 multiplication affects this?

Ok, I compiled it with the latest fpc trunk, with -O2 -WmMedium. Here are the binaries:

http://debian.fmi.uni-sofia.bg/~nickysn/fpc-8086/testf80/

Here are the results from my 286:

testf80p.exe:

Seed: 0x004A0020
Predefs: 0

Input count and press ENTER (blank to use the default=1000000) >1000 Count: 1000

[normal] null: 7.799 s
[normal] f2a: 129.510 s (t-null)
[normal] a2f: 89.703 s (t-f2a-null)
[subnormal] null: 4.771 s
[subnormal] f2a: 163.248 s (t-null)
[subnormal] a2f: 96.229 s (t-f2a-null)

Next seed: 0xFFB5FFDF

Note:
Small count of numers will lead to arbitrarily imprecise/random timings.

testf80a.exe:

Seed: 0x2601002E
Predefs: 0

Input count and press ENTER (blank to use the default=1000000) >1000 Count: 1000

[normal] null: 4.500 s
[normal] f2a: 22.580 s (t-null)
[normal] a2f: 17.749 s (t-f2a-null)
[subnormal] null: 4.071 s
[subnormal] f2a: 27.558 s (t-null)
[subnormal] a2f: 18.730 s (t-f2a-null)

Next seed: 0xD9FEFFD1

Note:
Small count of numers will lead to arbitrarily imprecise/random timings.

Nikolay

Reply by email

Jim Leonard
to Nikolay Nikolov
Nikolay Nikolov wrote
Here are the results from my 286:

A small reminder: The MUL/IMUL/DIV/IDIV speed was increased an order of magnitude from the 8088/8086 to the 80286. On 8086 a MUL is roughly 115 cycles; on 80286 it's 21. (on 386, it can be as low as 9)

Just thought I'd mention it since the thread was originally about i8086.

Jim Leonard () Check out some trippy MindCandy: http://www.mindcandydvd.com/ A child borne of the home computer wars: http://trixter.oldskool.org/ You're all insane and trying to steal my magic bag!

Reply by email