Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
IBM 305 RAMAC
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Architecture== {{More citations needed section|date=September 2013}} System architecture was documented in the ''305 RAMAC Manual of Operation''.<ref name=manual>[http://bitsavers.trailing-edge.com/pdf/ibm/305_ramac/22-6264-1_305_RAMAC_Manual_of_Operation_Apr57.pdf 305 RAMAC Manual of Operation], IBM, April 1957.</ref> The 305 was a character-oriented [[variable word length computer|variable "word" length]] decimal ([[Binary-coded decimal#IBM|BCD]]) computer with a [[drum memory]] rotating at 6000 [[revolutions per minute|RPM]] that held 3200 [[alphanumeric]] characters. A [[core memory]] buffer of 100 characters was used for temporary storage during data transfers. Each character was six bits{{snd}} plus one [[Parity bit|odd parity]] bit ("R"){{snd}} composed of two zone bits ("X" and "O") and remaining four binary bits for the value of the digit in the following format: X O 8 4 2 1 R [[Instruction set|Instructions]] could only be stored on 20 tracks of the drum memory and were fixed length (10 characters), in the following format: :T<sub>1</sub> A<sub>1</sub> B<sub>1</sub> T<sub>2</sub> A<sub>2</sub> B<sub>2</sub> M N P Q {| class="wikitable" align="left" |- !Field positions !Function |- |T<sub>1</sub> A<sub>1</sub> B<sub>1</sub> |Source operand address – Track, low order AB character |- |T<sub>2</sub> A<sub>2</sub> B<sub>2</sub> |Destination operand address – Track, low order AB character |- |M N |Length of operands (each operand must be entirely on its specified track) |- |P |Program exit code; used to select test conditions, perform jumps, and initiate input/output. The 305's control panel programming determines the action(s) performed. |- |Q |Control code; modifies the operation (similar to an [[op code]]), the default operation being a copy from source to destination. Other operations were: "1" Compare, "2" Field compare, "3" Compare & Field compare, "5" Accumulator reset, "6" Blank transfer test, "7" Compress & Expand, "8" Expand, "9" Compress |- |} {{clear|left}} [[Fixed-point arithmetic|Fixed-point]] data "words" could be any size from one decimal digit up to 100 decimal digits, with the X bit of the least significant digit storing the sign ([[signed number representations|signed magnitude]]). Data records could be any size from one character up to 100 characters. ===Drum memory=== The drum memory was organized into 32 tracks of 100 characters each. The color code of this table is: * Yellow – Storage * Blue – Arithmetic * Green – Input/output * Red – Special function {| class="wikitable" align="left" |- !Track specifier !Source function !Destination function |- BGCOLOR="yellow" |''W X Y Z'' |colspan=2|General storage |- BGCOLOR="yellow" |''0 1 2 3 4 5 6 7 8 9<br>& A B C D E F G H I'' |colspan=2|Instruction storage, general storage |- BGCOLOR="lightblue" |''L'' |Read accumulator |Add to accumulator |- BGCOLOR="lightblue" |''M'' |Read & clear accumulator |Subtract from accumulator |- BGCOLOR="lightblue" |''V'' |colspan=2|Multiplicand (1 to 9 characters) or divisor (1 to 9 characters) |- BGCOLOR="lightblue" |''N'' | {{N/A}} |Multiply (1 to 11 characters)<br>Stores 2 to 20 character product<br>in accumulators 0 & 1 |- BGCOLOR="lightblue" |''P'' | {{N/A}} |Divide (option) |- BGCOLOR="lightgreen" |''K'' |380 Punched card input | {{N/A}} |- BGCOLOR="lightgreen" |''S T'' | {{N/A}} |323 Punched card output,<br>370 Printer Output,<br>407 Printer output |- BGCOLOR="lightgreen" |''Q'' |colspan=2|380 Inquiry input/output |- BGCOLOR="lightgreen" |''J'' | {{N/A}} |350 File Address |- BGCOLOR="lightgreen" |''R'' |colspan=2|350 File data input/output |- BGCOLOR="pink" |''-'' |Core buffer |Character selector |- BGCOLOR="lightgreen" |''$'' |colspan=2|382 Paper tape input/output (option) |- |} {{clear|Left}} <code>L</code> and <code>M</code> select the same track, containing ten 10-character "[[Accumulator (computing)|Accumulator]]s". As a destination ''L'' specifies addition, ''M'' specifies subtraction. (Numbers in these accumulators were stored in [[ten's complement]] form, with the X bit of the most significant digit storing the sign. The sign of each accumulator was also held in a [[relay]]. However the 305 automatically converted between its standard signed magnitude format and this format without the need for special programming.) <code>J</code>, <code>''R''</code>, and <code>-</code> do not select tracks on the drum, they specify other sources and destinations. ===Jumps=== The 305's instruction set does not include any jumps, instead these are programmed on the control panel: * Unconditional jump – the program exit code (P field) specifies a ''Program exit hub'' on the control panel, which has a wire plugged into it and, via distributors, to ''Program entry hubs'' specifying the first, second and third address digit of the instruction to jump to. * Conditional jump – the program exit code (P field) specifies a ''Program exit hub'' on the control panel, which has a wire plugged into it and the appropriate ''Condition selector common hub'' to be tested, the corresponding two ''Condition selector output hub''s have wires plugged into them and the ''Program entry hub''s specifying the instructions to jump to or the ''Program advance hub'' to continue in sequence. Complicated conditions involving many ''Condition selectors'' could be wired to execute in a single instruction (e.g., Testing the sign and zero states of multiple accumulators), with one of several ''Program entry hub''s activated. * Multi-way jump – the destination track (T<sub>2</sub> field) is set to <code>-</code> and the appropriate ''Character selector hub''s on the control panel have wires plugged into them and the ''Program entry hub''s specifying the instructions to jump to or the ''Program advance hub'' to continue in sequence. ===Timing=== All timing signals for the 305 were derived from a factory recorded ''clock track'' on the drum. The clock track contained 816 pulses 12 μs apart with a 208 μs gap for sync. Reading or writing a character took 96 μs. The 305's typical instruction took three revolutions of the drum (30 ms): one (''I phase'') to fetch the instruction, one (''R phase'') to read the source operand and copy it to the core buffer, and one (''W phase'') to write the destination operand from the core buffer. If the P field (Program exit code) was not blank, then two (''D phase'' and ''P phase'') additional revolutions of the drum (20 ms) were added to the execution time to allow relays to be picked. The ''Improved Processing Speed'' option could be installed that allowed the three instruction phases (''IRW'') to immediately follow each other instead of waiting for the next revolution to start; with this option and well optimized code and operand placement a typical instruction could execute in as little as one revolution of the drum (10 ms). Certain instructions though took far longer than the typical 30 ms to 50 ms. For example, multiply took six to nineteen revolutions of the drum (60 ms to 190 ms) and divide (an option) took ten to thirty seven revolutions of the drum (100 ms to 370 ms). Input/Output instructions could interlock the processor for as many revolutions of the drum as needed by the hardware.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)