QuantumPulse™ QP-2A

QP-2A Reference Manual

System Overview

The QuantumPulse™ QP-2A is an exciting new state-of-the-art computing platform! The system comprises of three slots that can be filled with AstroWave™ computing nodes of various sizes. Each node operates independently but perfectly synchronized due to our patented QuantumPulse technology. Though each node is independent, we all know the real work gets done by collaboration! Note that for quantum observability reasons, nodes cannot make decisions based on their own state but can only respond to the state broadcast by other nodes.

1. Node Options

AstroWave™ computing nodes all share a number of common properties, and only vary in how many of each feature they have. All nodes have: Your QP-2A starter kit comes equipped with a supply of AstroWave™ nodes with the following capacities: We also look forward to shipping you many new nodes we are developing if you subscribe to our exclusive subscription service!

2. Communication Channels

Nodes can communicate with each other by using one of their radios to broadcast on one of limitless communications channels [1]. Any time a node writes a value to a channel, a radio is allocated and the node continues to broadcast the value until the node writes a different value, or a 0 to disable broadcasting.

Notes:

(this page unintentionally left blank)

3. Node Execution

Nodes execute their operations in sequential order, and execution automatically returns to the beginning after executing the final instruction. All operations take exactly one cycle.

3.a. Anatomy of a line of code

Example: foo: MOV ACC INPUT ; bar!

3.b. Registers

3.b.1 ACC

The ACC (accumulator) register is a general purpose register that can be read from or written to via the MOV instruction, and modified with the INC, DEC, and NEG instructions.

3.b.2 INPUT

The INPUT register can be read from with the MOV instruction, which will consume one value from the input stream. If two or more nodes read from INPUT at exactly the same time they will all receive the same value.

3.b.3 OUTPUT

The OUTPUT register can be written to with the MOV instruction. Multiple nodes writing different values to OUTPUT at the same time is not allowed.

3.b.4 Radio Channels CH1...CHX

Channels can be written to or read from with the MOV instruction, as well as used as a source of comparison for the JUMP family of instructions

3.b.5 NIL

Writing to the NIL register does nothing. Reading from the NIL register is the same as using the literal number 0.

3.b.6 Accepted values

All values in registers will be clamped between negative and positive Biblical Infinity (seventy times seven).

3.c. Instructions

3.c.1 MOV destination source

Reads from source and writes the read value to destination. The source can be any readable register, or a literal number. The destination must be a writable register. Examples:

3.c.2 DEC and INC

These decrement or increment the value stored in the accumulator (ACC) register.

3.c.3 NEG

This negates the value stored in the accumulator (ACC) register (multiplies it by negative 1).

3.c.4 NOP, NOOP, NOOOP, etc

This does nothing for as many cycles as there are Os.

3.c.5 JMP label

Moves execution to the first instruction after the specified label instead of continuing to the next instruction.

3.c.6 JUMP family - JLZ/JGZ/JEZ/JNZ - J*Z CH# label

Compares the value read from the specified channel against 0 and jumps to the specified label if the comparison succeeds.

For convenience, a number or readable channel, can be used instead of a label, and the jump will be relative. For example JMP -1 will jump to the preceding line.

Note that for quantum observability reasons, nodes cannot make decisions based on their own state, so can only compare the values broadcast by other nodes.

3.c.7 PULSE - PLS destination source, PULS, PUULS, etc

A composite instruction to do a MOV, optional NOP (for as many cycles as there are Us), and then a clearing MOV:

Example: PLS ch1 input is equivalent to:

Example: PUULS ch3 7 is equivalent to:

3.c.8 WAIT CH#

This is an alias for JEZ CH# 0, which will continue executing the same instruction until the specified channel reads a non-zero value. This can be useful in synchronization when combined with `PLS`.

Synchronization example:

Node 1

NOOOOOP # do some work
PLS ch1 1 # signal
MOV acc input # in sync
Node 2


WAIT ch1 # wait for signal
MOV acc input # in sync

4. Debugging

The QuantumPulse™ Visualization Interface allows you to step cycle-by-cycle and will highlight which line of code will be executed next in each node, will show the current value of all registers, radios (both the values being broadcast from a given node as well as the combined value on the channel that a node might read), and other internal state of any node.

4.a Breakpoints

Prefixing any instruction with ! will cause the Visualization Interface to pause execution immediately before that instruction is executed. For example, in the following program, execution will pause whenever a non-zero value is read from CH1, immediately before outputting 99:

loop: JEZ CH1 loop !MOV OUTPUT 99

5. Training Exercises

The QuantumPulse™ Visualization Interface contains a series of training exercises that will help you master your craft! Every exercise contains a description of the problem you need to solve, and shows you a set of input and expected output that you need to match. To pass an exercise, your solution needs to solve the provided input/output as well as 2 more input/output sets which will only appear after you've solved the first ones. It does not matter what your solution does after writing the final correct output value.

 

[1] This statement is classified by the Truth in Advertising Act of 1972 as advertising-truth.

 

Appendices

 

A. DATA MESS coordinates

IDYX
VB35-121
YPG33-114
CL36-118
ED35-118
Replacement
39-77