OCTOBUS

From NDWiki
Revision as of 12:31, 22 July 2026 by RHansen (talk | contribs) (OCTOBUS: add Protocol Deep Dive with message format, station table, command/kick codes)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Octobus (or OCTObus, as it was written in some documentation) was a high-speed serial command bus for system-internal high speed signal/command transfer. It could send short messages used for synchronization of directly coupled processors in multi-processor configurations including DOMINO I/O controllers.

OCTOBUS card in a ND-5700 crate.

Purpose

Octobus was a part of transforming the original ND-500 design, where the ND-110 processor was an I/O bottleneck, to a multi-processor system with DOMINO I/O boards connected directly to the MF-Bus. The role of OCTObus was to manage and synchronize the processors.

Physical implementation

The MPM-5 (MultiPortMemory) system was extended with the physical wiring and features for Octobus support and was then called Multi-Function bus, or MF-Bus, introduced with the ND-5000 series.

Protocol overview

  • An OCTObus message is 32 bits. It includes priority, destination, source, information, etc.
  • Each device connected to the OCTObus is called a node.
  • There can be up to 62 nodes on one OCTObus.
  • An OCTObus can be bridged to another OCTObus if 62 nodes isn't sufficient.
  • One node must be set up as MASTER. This node supplies the OCTObus clock (XCLK)
  • Any node can be set up as MASTER, the MASTER node is not special.
  • All nodes can take control of the bus, by issuing a request (XREQ) intercepted by the MASTER.
  • Power failures are tolerated by all nodes.
  • Retries are handled by hardware.

Signals

  • XREQ - Transmit request
  • XCLK - Clock
  • XDAT - Data
  • XRFO - Refresh oscillator

Data rate

Data rate depends on cable length.

Cable length in meters Clock frequency in MHz Data rate in Mbits/s
6 4 1.0
60 1 0.250
120 0.5 0.125

Cabling

The internal backwired OCTObus in the MF-Bus is called a local OCTObus and is TTL. Non-backwired OCTObus is called global OCTObus and uses differential cable.

Protocol Deep Dive

Software Message Format (16-bit I/O Register)

OCTOBUS frames are manipulated by software as 16-bit words in I/O registers. The following table shows bit assignments:

Bit 15 Bit 14 Bits 13–8 Bit 7 Bit 6 Bit 5 Bit 4 Bits 3–0
C B DEST/SOURCE E K M S Data/Number
Control Broadcast Destination/Broadcast Emergency Kick Multibyte Start/Stop Info/OMD
C (Bit 15) — Control
1 = Control message (commands, kicks, multibyte envelopes)
0 = Data message (payload bytes)
B (Bit 14) — Broadcast
1 = Broadcast to station type
0 = Unicast to specific station number
Bits 13–8 (6 bits) — Destination/Source
When B=0: Specific station number (1-62 decimal / 1-76 octal)
When B=1: Broadcast type for all nodes of a given class
Station 0 and 63 reserved/illegal
E (Bit 7) — Emergency
1 = Emergency command (master clear, ACCP termination)
0 = Normal command
Combined with command byte for emergency control codes
K (Bit 6) — Kick
1 = Process activation/synchronization signal
0 = Not a kick message
Kick numbers in bits 3-0 specify activation type (1-6)
M (Bit 5) — Multibyte
1 = Part of multi-frame message sequence
0 = Single-frame message
Used with S flag to delimit SOMB/EOMB boundaries
S (Bit 4) — Start/Stop (when M=1)
1 = Start of Multibyte (SOMB)
0 = End of Multibyte (EOMB)
OMD (Output Message Descriptor, 0-15) in bits 3-0
Bits 3–0 (4 bits) — Data/Number/OMD
Control messages: Command code
Kick messages: Kick number (1-6)
Multibyte messages: OMD (0-15) for message queue/handler
Data frames: Payload byte or metadata

Station Number Assignments

Station numbers follow the format: decimal (octal in ND documentation)

Type Stations (Decimal) Octal Range Purpose
ND-120 CPU 1 1 Primary processor (ND-100 on ND-500-II systems)
MFbus Controllers 2-7 2-7 Memory and I/O control (ND-5000)
SCSI Controllers 8-11 10-13 Disk/storage control
Matra VME 12-13 14-15 VME bus interface
Multifunction Comm 14-15 16-17 Communication controllers
Hyperchannel 16 20 Network interface
FDDI/Fibernet 17-19 21-23 High-speed network
FPS-5000 20-23 24-27 Floating-point accelerator
Graphics Controller 24-27 30-33 Display/graphics control
ND-5000 CPU 56-62 70-76 Processor (up to 7 CPUs per bus)

Message Types

Ident Message (C=1, E=0, K=0, M=0)
Station identity request/response
Bits 3-0 carry the ident number
Used for station discovery and presence verification
Kick Message (C=1, K=1)
Process activation and synchronization signals
Bits 3-0 specify the kick type (1-6)
No response expected
Emergency Message (C=1, E=1)
High-priority control commands (master clear, ACCP termination)
Hardware priority handling
Bits 3-0 carry emergency command code
Multibyte Message (C=1, M=1)
Multi-frame protocol for complex data and commands
Consists of SOMB, payload frames, EOMB
Supports inter-processor messaging via OMD (Output Message Descriptor)
Data Message (C=0)
Payload frame (body of multibyte message)
Bits 7-0 carry one data byte
Part of an active multibyte message sequence

Multibyte Message Protocol

Multibyte messages allow transmission of variable-length payloads (0-255 bytes) across multiple frames. Used for:

  • NUCLEUS inter-processor messaging
  • System parameter configuration
  • Complex command sequences
Frame Sequence
SOMB (Start of Multibyte): C=1, M=1, S=1, OMD in bits 3-0
Destination station/broadcast type in bits 13-8
Initiates message reception at destination
Data Frame 1: C=0, destination station, low byte = source OMD
Identifies which OMD at the source will receive the reply
Data Frame 2: C=0, destination station, low byte = payload byte count N
Specifies how many payload bytes follow
Data Frames 3..N+2: C=0, destination station, low byte = payload byte i
Payload bytes transmitted one per frame
EOMB (End of Multibyte): C=1, M=1, S=0, OMD in bits 3-0
Signals message completion
Destination processes the complete message
OMD (Output Message Descriptor)
Range 0-15 (4 bits), identifies message queue/handler at destination
OMD 0 reserved for OCTOBUS Test Protocol (station firmware service)
OMD 1-15 available for application messages
Destination replies by sending to the source OMD specified in Data Frame 1

Command Codes

Control messages (C=1, E=0) use command codes in the low byte:

Code (hex) Octal Symbol Purpose
0x00 000 CMACK Acknowledge
0x0E 016 CMSYS System parameter (multibyte header)
0x10 020 CMREA Read address
0x14 024 CMDWW Direct write word
0x16 026 CMDRW Direct read word
0x1B 033 CMRUN Run
0x1C 034 CMSTO Stop
0x1D 035 CMCON Continue
0x1E 036 CMRES Reset
0x21 041 CMMAC Master Clear (with E=1: emergency 0xA1/241₈)
0x22 042 CMACO Continue ACCP (with E=1: emergency 0xA2/242₈)
0x24 044 Terminate ACCP (with E=1: emergency 0xA4/244₈)
0x31 061 CMENK Enable kick
0x36 066 CMMIC Microcode command
0x39 071 CMCPU CPU reset (sent as multibyte to OMD 3 on ACCP)
0x3A 072 CMTES Test command

Kick Numbers

Kick messages (K=1) use 4-bit kick numbers (bits 3-0) for process synchronization:

Kick # Symbol Purpose Used By
1 N100KICK Activate ND-5000 process ND-100 to ND-500/ND-5000
2 Alternate activate signal ND-5000
3 CLRKICK Clear flag, continue process Inter-CPU coordination
4 Update internal clock System timing
5 NUCLEUS kick NUCLEUS inter-processor messaging
6 IDLEKICK Save context, go IDLE Processor idle/sleep

Hardware Message Format (32-bit on Wire)

The wire format includes bits not visible to software (managed by hardware). Total: 1 start bit + 30 data bits + 1 stop bit = 32 bits.

Priority
(4 bits)
Dest
(6 bits)
C
(1)
B
(1)
Source
(6 bits)
Information
(8 bits)
Parity
(2 bits)
Ack
(2 bits)
Lost Access Counter Destination Station Control Broadcast Source Station Data/Command Bit Count Delivery Status
Priority (4 bits)
Hardware-managed Lost Access Counter for bus arbitration
Prevents starvation: stations that lose arbitration gain higher priority
Parity (2 bits)
Two LSBs of count of '1' bits in frame (computed by hardware)
Ack (2 bits) — Delivery status code
00 = Timeout (15 retries)
01 = Successfully received
10 = Destination busy (255 retries with automatic retry)
11 = Parity error (B=0) or Ambiguous response (B=1)
Source (6 bits)
Station number of transmitter (set by hardware from STANO register)
On reception, this becomes the visible station number in software

OCTOBUS Test Protocol (OMD 0)

Every station serves OMD 0, which implements the OCTOBUS Test Protocol. Used for:

  • Station discovery (Identify yourself)
  • Get present stations on bus
  • Echo single/multi-word messages
  • Read/write Octobus registers
  • Get station type and firmware version
  • Diagnostic and maintenance operations

Protocol verified from TPE (Test Program Equipment) OCTOBUS B00 test suite:

  • Test 1: Transmit-receive loopback
  • Test 2: Pattern exhaustion
  • Test 3: FIFO depth verification
  • Test 4: Station discovery and registry
  • Test 5: Single-word echo
  • Test 6: Multi-word message echo

See Also

  • ND-500 — Classic 32-bit coprocessor
  • ND-500-II — ND-500 with OCTOBUS via line driver
  • ND-5000 — Native OCTOBUS processor
  • NUCLEUS — Inter-processor messaging runtime
  • DOMINO — I/O controller system
  • MPM-5 — Shared memory predecessor
  • MFbus — Modern successor bus (ND-5000)

Sources

  • ND-14.001.1A DOMINO Standard Hardware Description
  • "Sales information ND-5000 series" (found at www.sintran.com, original published by Norsk Data). Filesize 1.1 MB. Accessed on 03 August 2010.