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