CPUMon080

Post Reply
User avatar
flype
Posts: 39
Joined: Sat 19 Nov 2016 13:58

CPUMon080

Post by flype » Mon 21 Nov 2016 01:58

I'm pleased to present you a tool i'm working on - that make uses of the CPU internal stats counters.

CPUMon080 is a graphical CPU Monitor for the AC68080 that shows in realtime valuable informations of the internal CPU activity.

It requires a GOLD2+ core

and it is currentely developped using a GOLD2 alpha core.

It can shows how many MIPS are currentely in use (literally how many million of instructions really executed in a given interval). This can't be compared to classical CPU Load existing tools. One of the coolest feature is the ability to show the Pipe 1 and Pipe 2 usage. Also, coders have an interesting visibility on the Branches prediction efficiency, Cache hits efficiency, the amount of R/W on mem, and stalls. This informations gives hints on about how to optimize a program (with some knowledges) - but mainly it is *fun* to use even as end-users :mrgreen:

I wanted to have a minimal impact on the general performances while not sacrifying the look and feel, so CPUMon is coded 100% in ASM. It use very few CPU ressources for what it does. It is small, 4KB, about 800 lines of code - quite simple code, mainly calling CPU counters, computing some valuable informations, and using the Graphics.library for the rendering (Move, Text, Draw, SetAPen, PolyLine, ...).

This is early work and i'm still digging into AmigaOS API to improve it as i wish (i need to dig into window border sizes, iconifying, font sizing and such). Also i plan to add some more informations such as the IPC (Instruction Per Cycle), the % of usage of the pipe 2, Peak values to remember max scores. Also, i would like to add selectable different timing resolutions (some levels between 'faster refresh but less accurate' and 'slower but more accurate' (1/10 sec, 1/5 sec, 1/2 sec, 1 sec). And a toggable File logger. Also, i will put the sources on github when i'm happy with current code to invit more skilled coders to improve it.

Image

Videos :

https://www.youtube.com/watch?v=jO0_SkHogrI&

https://www.youtube.com/watch?v=ees1PExo4PA
Last edited by flype on Tue 22 Nov 2016 15:25, edited 2 times in total.
Amiga 600 + 2MB ChipRAM + V600 V2-128 + PCMCIA LinkSys Wifi card.
Amiga 1200 + Blizzard 030 IV + 256MB FastRAM 50ns.
-
68k rulez!

User avatar
flype
Posts: 39
Joined: Sat 19 Nov 2016 13:58

Re: CPUMon080

Post by flype » Mon 21 Nov 2016 09:44

Some progress :

- Added IPC (Instruction Per Cycle/Clock) :

Code: Select all

( ( MIPS_in_Pipe1 + MIPS_in_Pipe2 ) / Freq_in_MHz )
- Added SuperScalar (efficiency of superscalar code) :

Code: Select all

( ( Min( MIPS_in_Pipe1, MIPS_in_Pipe2 ) * 200 ) / ( MIPS_in_Pipe1 + MIPS_in_Pipe2 ) )
- Added Data-Cache Hit (Percent of Memory Reads from Data-Cache) :

Code: Select all

( ( Data_Cache_Hits * 100 ) / ( Data_Cache_Hits + Data_Cache_Misses ) )

- Added Branch-Prediction (Percent of branches correctely predicted) :

Code: Select all

( ( Bra_Corrects * 100 ) / ( Bra_Corrects + Bra_Wrongs ) )

- Added Stall-Total (Sum of stalls counters) :

Code: Select all

( Stall_Reg + Stall_Cache + Stall_Hazard + Stall_Buffer )
- Added CPU CACR and PCR state
- Added Board Serial Number
- Added Core Revision string
- Added selectable size (small, intermediates, large) - using hotkey
- Added pause/idle state - using hotkey
- Added WBStart (start from icon or CLI)
- Improved design

Image

Roadmap / TODO :

- Add Report / Logging to file (start/stop using hotkey)
- Add Iconify / Run in background
- Improve low depth rendering (when run in PAL 4 to 32 colors)
- Improve Default user preferences (Window Borders / Font Sizes)
- Refresh CACR/PCR Flags at runtime
Amiga 600 + 2MB ChipRAM + V600 V2-128 + PCMCIA LinkSys Wifi card.
Amiga 1200 + Blizzard 030 IV + 256MB FastRAM 50ns.
-
68k rulez!

User avatar
guibrush
Posts: 95
Joined: Sat 19 Nov 2016 14:12

Re: CPUMon080

Post by guibrush » Mon 21 Nov 2016 23:07

Hi flype

Very nice one ! I have tried it, and it's look awesome !
Last edited by guibrush on Tue 22 Nov 2016 09:51, edited 1 time in total.
A600 V1.5, V600 V2, A604n, RTC, Indi ECS, 32Gb CF, PCMCIA Ethernet, HD floppy, TOM, HP Pavilion 23xi monitor
A500+V8A, V500+, Indi ECS, 32Gb CF, SD-net, SD floppy, Kipper 2Mb chip expansion, TOM, Eizo EV2450

User avatar
TuKo
Administrateur du site
Posts: 70
Joined: Thu 17 Nov 2016 23:29
Location: Switzerland
Contact:

Re: CPUMon080

Post by TuKo » Tue 22 Nov 2016 08:55

That's indeed a very useful tool for developers !
It also looks stylish for users like me :)
A600, V600 V2, A604n+Indi+RTC, CF 32Gb, WiFi
A500+, V500 V2+, Kipper 1MB ChipRAM, CF 32GB, Indivision ECS, ESP8266, Plipbox
A4000D, CS MK2 68060@66MHz 128Mb, Indi MK2cr, CF 16Gb, CV64 4Mb, FastATA MK-VI, Ariadne II

User avatar
flype
Posts: 39
Joined: Sat 19 Nov 2016 13:58

Re: CPUMon080

Post by flype » Tue 22 Nov 2016 14:08

Thank you guys, much appreciated.

Some progress related to adaptative GUI and Jauges :

- Window Border sizes and font size are used to calculate correct display.
- Better pen selection to make it looks good even in PAL (native) screen.
- Now use a own made jauge chunky array that i blit to the window using WriteChunkyPixels. That looks good i think.

Image
Amiga 600 + 2MB ChipRAM + V600 V2-128 + PCMCIA LinkSys Wifi card.
Amiga 1200 + Blizzard 030 IV + 256MB FastRAM 50ns.
-
68k rulez!

User avatar
guibrush
Posts: 95
Joined: Sat 19 Nov 2016 14:12

Re: CPUMon080

Post by guibrush » Tue 22 Nov 2016 15:29

Nice. Il like the black version very much, its give a modern look. How does the core revision string work ? The same way as the flash tool, or with a chech of the file in the vampire flash ?
A600 V1.5, V600 V2, A604n, RTC, Indi ECS, 32Gb CF, PCMCIA Ethernet, HD floppy, TOM, HP Pavilion 23xi monitor
A500+V8A, V500+, Indi ECS, 32Gb CF, SD-net, SD floppy, Kipper 2Mb chip expansion, TOM, Eizo EV2450

User avatar
flype
Posts: 39
Joined: Sat 19 Nov 2016 13:58

Re: CPUMon080

Post by flype » Wed 23 Nov 2016 10:44

guibrush wrote:Nice. Il like the black version very much, its give a modern look. How does the core revision string work ? The same way as the flash tool, or with a chech of the file in the vampire flash ?
It works exact same as ">VampireTool CORE".
Amiga 600 + 2MB ChipRAM + V600 V2-128 + PCMCIA LinkSys Wifi card.
Amiga 1200 + Blizzard 030 IV + 256MB FastRAM 50ns.
-
68k rulez!

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest