Autor Wątek: Program obliczający prędkość procesora  (Przeczytany 9330 razy)

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Program obliczający prędkość procesora
« dnia: 2014.11.23, 09:08:38 »
Czy zna ktoś jakiś program który oblicza prędkość procesora w ZX Spectrum i klonach? Jak sprawdzić, obliczyć z jaką częstotliwością pracuje procesor?
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Program obliczający prędkość procesora
« Odpowiedź #1 dnia: 2014.11.23, 10:58:26 »
Popatrz na tej stronie - są różne programy testowe i linki do jeszcze więcej programów testowych. Może któryś sprawdza również procesor???

http://wizard.ae.krakow.pl/~jb/qaop/tests.html

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Program obliczający prędkość procesora
« Odpowiedź #2 dnia: 2014.11.24, 20:35:07 »
Na zapodanej stronie nie znalazłem czegoś co mogłoby pomóc ale na forum zx.pk.ru w temacie o timingach klona "Bajt" - Эмуляция "Байт" (тайминги, карта памяти) znalazłem program timechart02.rar, który po uruchomieniu (w emulatorze Spectaculator) pokazuje takie coś jak w załączniku timings.png
Następnie z tej strony w informacjach na temat procesora Z80 dowiedziałem się iż cykle procesora to tak zwane T-states oraz, że każda instrukcja procesora może zająć inną ilość T-states. Najciekawsze wyczytałem dalej:
Cytuj
Also every 69888 Tstates an Interrupt can occur 50 times a second like refresh the screen, remembering the analogue TV's working off the mains here in the UK had a refresh rate of 50hz the electron beam would redraw the picture 50 times a second, in order for the spectrum screen to be stable then the same would apply the screen would need to be drawn 50 times a second thus the 50 * 69888 = 3494400 Tstate per second, CPU running at approximately 3.49Mhz.

Wynika z tego iż co 69888 T-States jest wyświetlana pełna ramka ekranu a skoro telewizor wyświetla 50Hz to aby obliczyć prędkość procesora trzeba pomnożyć te 50Hz razy ilość T-states potrzebnych do wyświetlenia pełnej ramki obrazu - w rezultacie wychodzi prędkość procesora 3.5MHz. Coś mi tu jednak nie pasuje albo do końca nie rozumiem o co chodzi w tym programie timechart no bo co ma telewizor do prędkości procesora  :-\
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Program obliczający prędkość procesora
« Odpowiedź #3 dnia: 2014.11.24, 22:45:15 »
No dobra, ale wróćmy do tematu. Sprawdziłem program w moim klonie "Bajt" i wyświetla nieco odmienne wyniki a dokładnie tak:
The number of tacts in the full frame is
69888 (1083 interations using 4t commands)
69886 (866 interations using 5t commands)
69888 (722 interations using 6t commands)
224 tacts per screen line
Czyli druga linia różni się nieco od tej w Spectaculator. Co ciekawe przez chwilę po uruchomieniu programu w Spectaculator (ROM ZX48) druga linia jest taka sama jak w moim klonie czyli 69886 - ale tylko przez chwilę.
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 769
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Program obliczający prędkość procesora
« Odpowiedź #4 dnia: 2014.11.24, 22:55:49 »
A żeby było ciekawiej, emulator ZXMAK2 który niby poprawnie emuluje pamięć klona "Bajt" po uruchomieniu programu timechart wyświetla na przemian drugą linię tak jak w załączniku.
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: Program obliczający prędkość procesora
« Odpowiedź #5 dnia: 2014.11.25, 08:51:26 »
To, co pokazuje ci ten timechart to wynik wykonania jakiejś pętli pomiędzy dwoma przerwaniami. Znając czas wykonania samych instrukcji pętli zmieniamy instrukcję wewnętrzną wstawiając taką, która wykonuje się 4, 5 i 6 taktów i wyliczamy ile razy pętla się wykonała od przerwania do przerwania co daje nam dość dobry ogląd liczby taktów w pojedynczej ramce a z tego możemy obliczyć prędkość w MHz zakładając, że mamy w pełni stabilną częstotliwość taktowania samej ramki. W praktyce programowania na Spectrum i pochodnych dokładna znajomość prędkości procesora nie ma strategicznego znaczenia - istotniejsza jest wiedza na temat liczby taktów w ramce, linii, borderze i contention pattern.