Throttling in new build question

24 views
Skip to first unread message

Mike Katz

unread,
Apr 5, 2026, 1:47:15 AM (12 days ago) Apr 5
to PiDP-8
I am running Bill's latest PiDP-8/I software on two PiDP-8/I's.  The one on the left is running Trixie 64 Bit in a Pi3B and the one on the right is running Trixie 64 Bit on a Pi4B.

Question 1:  I set the throttling to 100,000 instructions per second on both units.  And they are running the same PDP-8 machine code.  However, the unit running on the Pi 3B seems to be running a little bit faster.  Shouldn't the be running at approximately the same speed?

Video of the two units described above set to run at the same speed.

They are both running a program I wrote called Bounce which bounces a bit across the accumulator at a speed determined by the switch register.  Program listing is at the end of this email.

Question 2:  If I type set throttle 1M I get the following message on either unit:
 
sim> set throttle 1M
sim>
sim> show throttle
Throttle:                      1 megainstructions
Throttling by sleeping for:    1 ms every 107 instructions
sim> set throttle 1k
sim> show throttle
Throttle:                      1 kiloinstructions
Throttling by sleeping for:    1 ms every 107 instructions
sim>


If I do the same thing again I get 1mS every 368 instructions on the Pi4B and 1ms every 1077 instructions on the Pi3.

Why is this number changing?

Question 3:  Looking at the show clocks output from SiMH the Pi3B is showing 656,040 instructions/second and the Pi4b is showing 330,900 instructions/second.  Both of these systems are running the same OS (from RaspBerry Pi's imager), same SiMH (locally compiled) and the same PDP-8 code.  Why does it look like the Pi3B is faster than the Pi3B.  show config shows identical outputs on both units.

Pi4B information:
cat /sys/firmware/devicetree/base/model
Raspberry Pi 4 Model B Rev 1.5

cat /proc/cpuinfo
processor       : 0
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

processor       : 1
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

processor       : 2
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

processor       : 3
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

Revision        : c03115
Serial          : 100000001f2f2ff3
Model           : Raspberry Pi 4 Model B Rev 1.5

cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.4
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

sim> show clocks
Minimum Host Sleep Time:        1 ms (1000Hz)
Host Clock Resolution:          1 ms
Execution Rate:                 330,900 instructions/sec
Throttle:                      1 megainstructions
Throttling by sleeping for:    1 ms every 368 instructions
Calibrated Timer:               CLK
Pre-Calibration Estimated Rate: 4,595,588
Calibration:                    Always
Asynchronous Clocks:            Available
Time at sim> prompt:            25:16.691 minutes

PDP-8 clock device is CLK
Calibrated Timer 0:
  Running at:                60 Hz
  Tick Size:                 16.667 msecs
  Ticks in current second:   4
  Seconds Running:           20,221 (5:37:01 hours)
  Calibration Opportunities: 20,221
  Instruction Time:          308953786572
  Current Insts Per Tick:    5,515
  Initializations:           3
  Ticks:                     1,213,235
  Tick Time:                 5:37:00.566666 hours
  Initialize Base Time:      18:34:52.391
  Tick Start Time:           18:34:52.418
  Wall Clock Time Now:       00:37:08.928

sim> show ve
PDP-8 simulator Open SIMH V4.1-0 Current
    Simulator Framework Capabilities:
        32b data
        32b addresses
        no Ethernet
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        RAW disk and CD/DVD ROM support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 14.2.0
        Simulator Compiled as C (Release Build) on Apr  4 2026 at 18:24:03
        Build Tool: autosetup+gmake
        Memory Access: Little Endian
        Memory Pointer Size: 64 bits
        Large File (>2GB) support
        SDL Video support: No Video Support
        No RegEx support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: Linux pidp8i-Inv 6.12.75+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.75-1+rpt1 (2026-03-11) aarch64 GNU/Linux
        Processor Name: Cortex-A72
        tar tool: tar (GNU tar) 1.35
        curl tool: curl 8.14.1 (aarch64-unknown-linux-gnu) libcurl/8.14.1 OpenSSL/3.5.5 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 nghttp3/1.8.0 librtmp/2.3 OpenLDAP/2.6.10
        git commit id: c5d1f8c5
        git commit time: 2025-06-29T16:58:05-04:00

Pi3B Information:

cat /sys/firmware/devicetree/base/model
Raspberry Pi 3 Model B Plus Rev 1.3

cat /proc/cpuinfo
processor       : 0
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 1
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 2
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 3
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

Revision        : a020d3
Serial          : 0000000041ceb793
Model           : Raspberry Pi 3 Model B Plus Rev 1.3

cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.4
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

sim> show clocks
Minimum Host Sleep Time:        1 ms (1000Hz)
Host Clock Resolution:          1 ms
Execution Rate:                 656,040 instructions/sec
Throttle:                      1 megainstructions
Throttling by sleeping for:    1 ms every 1077 instructions
Calibrated Timer:               CLK
Pre-Calibration Estimated Rate: 294
Calibration:                    Always
Asynchronous Clocks:            Available
Time at sim> prompt:            27:39.609 minutes

PDP-8 clock device is CLK
Calibrated Timer 0:
  Running at:                60 Hz
  Tick Size:                 16.667 msecs
  Ticks in current second:   38
  Seconds Running:           11,016 (3:03:36 hours)
  Calibration Opportunities: 11,016
  Calibs Skip Gap Too Big:   1
  Instruction Time:          21097548284
  Current Insts Per Tick:    10,934
  Initializations:           3
  Ticks:                     660,949
  Tick Time:                 3:03:35.8 hours
  Initialize Base Time:      21:04:45.597
  Tick Start Time:           21:04:45.597
  Wall Clock Time Now:       00:36:01.161
sim> show ve
PDP-8 simulator Open SIMH V4.1-0 Current
    Simulator Framework Capabilities:
        32b data
        32b addresses
        no Ethernet
        Idle/Throttling support is available
        Virtual Hard Disk (VHD) support
        RAW disk and CD/DVD ROM support
        Asynchronous I/O support (Lock free asynchronous event queue)
        Asynchronous Clock support
        FrontPanel API Version 12
    Host Platform:
        Compiler: GCC 14.2.0
        Simulator Compiled as C (Release Build) on Apr  4 2026 at 15:49:04
        Build Tool: autosetup+gmake
        Memory Access: Little Endian
        Memory Pointer Size: 64 bits
        Large File (>2GB) support
        SDL Video support: No Video Support
        No RegEx support for EXPECT commands
        OS clock resolution: 1ms
        Time taken by msleep(1): 1ms
        OS: Linux pidp8i 6.12.75+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.75-1+rpt1 (2026-03-11) aarch64 GNU/Linux
        Processor Name: Cortex-A53
        tar tool: tar (GNU tar) 1.35
        curl tool: curl 8.14.1 (aarch64-unknown-linux-gnu) libcurl/8.14.1 OpenSSL/3.5.5 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 nghttp3/1.8.0 librtmp/2.3 OpenLDAP/2.6.10
        git commit id: c5d1f8c5
        git commit time: 2025-06-29T16:58:05-04:00



BOUNCE.PA Program
   33        0100          *100
   34 00100  7001  START,  IAC         // Start with 1 in the AC
   35 00101  4113  LOOP,   JMS DELAY   // Wait for a bit
   36 00102  7004  SKIP1,  RAL         // Shift that bit left
   37 00103  7420          SNL         // Did we shift the bit into the link?
   38 00104  5101          JMP LOOP    // No:  Keep looping
   39 00105  5107          JMP SKIP    // Yes:  Skip the delay and rotate the bit back
                                       //       This instruction is here because the 8/E
                                       //       does not have the link register light
                                       //       on the same row with the accumulator lights
   40 00106  4113  LOOP2,  JMS DELAY   // Delay
   41 00107  7010  SKIP,   RAR         // Shift the bit right
   42 00110  7420          SNL         // Did it rotate into the link?
   43 00111  5106          JMP LOOP2   // No:  Rinse and repeat
   44 00112  5102          JMP SKIP1   // See the PDP-8/E Command above
   45
   46
   47 00113  0000  DELAY,  0           // Entry Point
   48 00114  7421          MQL         // Save the bit position from AC in the MQ
   49 00115  7404          OSR         // Read the Switch Register
   50 00116  7040          CMA         // Compliment the AC because we are counting up not down
   51 00117  3127          DCA TEMP1   // Save the outer loop counter
   52 00120  7521          SWP         // Restore the bit into the AC from the MQ (MQ destroyed)
   53 00121  2126  LOOP1,  ISZ TEMP    // Increment the inner loop counter
   54 00122  5121          JMP LOOP1   // Loop until it is zero
   55 00123  2127          ISZ TEMP1   // Increment the outer loop
   56 00124  5121          JMP LOOP1   // Loop both inner and outer loop until the outer loop counter is zero
   57 00125  5513          JMP I DELAY // Return from subroutine
   58
   59 00126  0000  TEMP,   0           // Counter for outer loop
   60 00127  0000  TEMP1,  0           // Counter for inner loop







Reply all
Reply to author
Forward
0 new messages