<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.ndwiki.org/index.php?action=history&amp;feed=atom&amp;title=MPM-5</id>
	<title>MPM-5 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.ndwiki.org/index.php?action=history&amp;feed=atom&amp;title=MPM-5"/>
	<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=MPM-5&amp;action=history"/>
	<updated>2026-07-27T13:45:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=MPM-5&amp;diff=7866&amp;oldid=prev</id>
		<title>RHansen: layout fix</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=MPM-5&amp;diff=7866&amp;oldid=prev"/>
		<updated>2026-07-22T11:54:10Z</updated>

		<summary type="html">&lt;p&gt;layout fix&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:54, 22 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Infobox&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/ins&gt;Full Name&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|label1=&lt;/del&gt;Full Name&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;Multiport Memory 5&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|data1=&lt;/del&gt;Multiport Memory 5&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/ins&gt;Abbreviation&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|label2=&lt;/del&gt;Abbreviation&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;MPM-5&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|data2=&lt;/del&gt;MPM-5&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/ins&gt;Introduced&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|label3=&lt;/del&gt;Introduced&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;June 1984 (technical description published)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|data3=&lt;/del&gt;June 1984 (technical description published)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/ins&gt;Purpose&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|label4=&lt;/del&gt;Purpose&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;Multi-processor shared memory system&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|data4=&lt;/del&gt;Multi-processor shared memory system&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; &lt;/ins&gt;Used In&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|label5=&lt;/del&gt;Used In&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;ND-100, ND-500, ND-500-II systems&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|data5=&lt;/del&gt;ND-100, ND-500, ND-500-II systems&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;MPM-5&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;Multiport Memory 5&amp;#039;&amp;#039;&amp;#039;) was Norsk Data&amp;#039;s shared memory system that enabled multiple processors ([[ND-100]], [[ND-500]], [[ND-500-II]]) to access a common pool of memory simultaneously.&amp;lt;ref name=&amp;quot;technical&amp;quot;/&amp;gt; It was the foundation for multi-processor configurations before the [[ND-5000]] era introduced [[OCTOBUS]] and [[MFbus]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;MPM-5&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;Multiport Memory 5&amp;#039;&amp;#039;&amp;#039;) was Norsk Data&amp;#039;s shared memory system that enabled multiple processors ([[ND-100]], [[ND-500]], [[ND-500-II]]) to access a common pool of memory simultaneously.&amp;lt;ref name=&amp;quot;technical&amp;quot;/&amp;gt; It was the foundation for multi-processor configurations before the [[ND-5000]] era introduced [[OCTOBUS]] and [[MFbus]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
	<entry>
		<id>https://www.ndwiki.org/index.php?title=MPM-5&amp;diff=7864&amp;oldid=prev</id>
		<title>RHansen: New article describing MPM5 memory</title>
		<link rel="alternate" type="text/html" href="https://www.ndwiki.org/index.php?title=MPM-5&amp;diff=7864&amp;oldid=prev"/>
		<updated>2026-07-22T11:47:19Z</updated>

		<summary type="html">&lt;p&gt;New article describing MPM5 memory&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox&lt;br /&gt;
|label1=Full Name&lt;br /&gt;
|data1=Multiport Memory 5&lt;br /&gt;
|label2=Abbreviation&lt;br /&gt;
|data2=MPM-5&lt;br /&gt;
|label3=Introduced&lt;br /&gt;
|data3=June 1984 (technical description published)&lt;br /&gt;
|label4=Purpose&lt;br /&gt;
|data4=Multi-processor shared memory system&lt;br /&gt;
|label5=Used In&lt;br /&gt;
|data5=ND-100, ND-500, ND-500-II systems&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MPM-5&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;Multiport Memory 5&amp;#039;&amp;#039;&amp;#039;) was Norsk Data&amp;#039;s shared memory system that enabled multiple processors ([[ND-100]], [[ND-500]], [[ND-500-II]]) to access a common pool of memory simultaneously.&amp;lt;ref name=&amp;quot;technical&amp;quot;/&amp;gt; It was the foundation for multi-processor configurations before the [[ND-5000]] era introduced [[OCTOBUS]] and [[MFbus]].&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
MPM-5 provided a [[multiport memory]] architecture that allowed:&lt;br /&gt;
* Multiple processors to read/write shared data structures&lt;br /&gt;
* DMA controllers to access memory independently&lt;br /&gt;
* Real-time coordination between CPUs via shared memory synchronization&lt;br /&gt;
* System configurations from 1 to 4 processors&lt;br /&gt;
&lt;br /&gt;
The system consisted of three main hardware modules:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Twin 16-Bit Port Module&amp;#039;&amp;#039;&amp;#039; — Entry point for each CPU into the memory bank&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Dynamic RAM Module&amp;#039;&amp;#039;&amp;#039; — Physical storage (up to 16MW per bank)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Line Driver Module&amp;#039;&amp;#039;&amp;#039; — Inter-bank signal distribution for global memory access&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Organization ===&lt;br /&gt;
&lt;br /&gt;
; Bank Structure&lt;br /&gt;
: Each MPM-5 bank = 64KW (128KB) addressable by 16-bit register&lt;br /&gt;
: Maximum 256 banks = 16MW (32MB) total addressing&lt;br /&gt;
&lt;br /&gt;
; Addressing&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;Local access&amp;#039;&amp;#039;&amp;#039; — Within single bank (64KW per port)&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;Global access&amp;#039;&amp;#039;&amp;#039; — Through line driver to other banks&lt;br /&gt;
: Address decoding via dual RAMs (LOCAL and GLOBAL paths)&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
; Twin 16-Bit Port (PCB 5152 or 5155)&lt;br /&gt;
: 2 × 16-bit width (compatible with 16-bit and 32-bit channels)&lt;br /&gt;
: Accepts up to 29 address bits (32-bit word addressing)&lt;br /&gt;
: Port control registers for configuration&lt;br /&gt;
: Master/slave control for arbitration&lt;br /&gt;
&lt;br /&gt;
; Dynamic RAM (PCB)&lt;br /&gt;
: Variable capacity configurations&lt;br /&gt;
: Error correction and detection&lt;br /&gt;
: Error logging and suppression registers&lt;br /&gt;
: Memory test and diagnostic support&lt;br /&gt;
&lt;br /&gt;
; Line Driver (PCB 5166 or variant)&lt;br /&gt;
: Differential signaling between banks&lt;br /&gt;
: Address and data distribution&lt;br /&gt;
: Control signal buffering&lt;br /&gt;
: Global memory coordination&lt;br /&gt;
&lt;br /&gt;
=== Addressing Modes ===&lt;br /&gt;
&lt;br /&gt;
; Interleave Types&lt;br /&gt;
: 16-bit interleave (ND-100 mode)&lt;br /&gt;
: 32-bit interleave (ND-500 mode for 64-bit cache systems)&lt;br /&gt;
: 32-bit non-interleave&lt;br /&gt;
: Configurable via port control register&lt;br /&gt;
&lt;br /&gt;
; Address Windows&lt;br /&gt;
: Define memory regions accessible per port&lt;br /&gt;
: Separate decoding for LOCAL (within-bank) vs GLOBAL (cross-bank)&lt;br /&gt;
: Address conversion tables (5152/5155 specific)&lt;br /&gt;
: ALLOW bit on 5155 for cache-width selection&lt;br /&gt;
&lt;br /&gt;
== Integration with Computers ==&lt;br /&gt;
&lt;br /&gt;
=== ND-100 Systems ===&lt;br /&gt;
&lt;br /&gt;
ND-100 CPUs could be extended with MPM-5 for:&amp;lt;ref name=&amp;quot;nd100&amp;quot;/&amp;gt;&lt;br /&gt;
* Multi-processor real-time coordination&lt;br /&gt;
* I/O processor + compute processor configurations&lt;br /&gt;
* Shared program/data memory access&lt;br /&gt;
&lt;br /&gt;
Integration described in [[ND-06.015]] (ND-100 Functional Description)&lt;br /&gt;
&lt;br /&gt;
=== ND-500 Systems ===&lt;br /&gt;
&lt;br /&gt;
ND-500 coprocessors used MPM-5 for:&amp;lt;ref name=&amp;quot;nd500&amp;quot;/&amp;gt;&lt;br /&gt;
* Communication with [[ND-100]] I/O processor&lt;br /&gt;
* Shared memory for message passing (pre-[[NUCLEUS]])&lt;br /&gt;
* Multiport access from up to 4 ND-500 CPUs&lt;br /&gt;
* DMA controller data transfer coordination&lt;br /&gt;
&lt;br /&gt;
Integration described in ND-05.011 (ND-500 Hardware Description)&lt;br /&gt;
&lt;br /&gt;
=== ND-500-II Systems ===&lt;br /&gt;
&lt;br /&gt;
[[ND-500-II]] retained MPM-5 for:&lt;br /&gt;
* [[NUCLEUS]] kernel data structures&lt;br /&gt;
* Port and message queues (shared with [[ND-100]])&lt;br /&gt;
* OCTOBUS coordination via line driver&lt;br /&gt;
* Backward compatibility with ND-500 code&lt;br /&gt;
&lt;br /&gt;
=== ND-5000 Transition ===&lt;br /&gt;
&lt;br /&gt;
[[ND-5000]] systems replaced MPM-5 with:&lt;br /&gt;
* [[MFbus]] (Multifunction Bus) — successor technology&lt;br /&gt;
* [[OCTOBUS]] — native serial signaling (not via line drivers)&lt;br /&gt;
* Improved performance and integrated architecture&lt;br /&gt;
&lt;br /&gt;
== Control and Test Registers ==&lt;br /&gt;
&lt;br /&gt;
MPM-5 ports featured extensive register sets:&lt;br /&gt;
&lt;br /&gt;
; Master Control Register&lt;br /&gt;
: System-wide configuration and control&lt;br /&gt;
: Interleave type selection&lt;br /&gt;
: Cache width settings (32-bit vs 64-bit)&lt;br /&gt;
&lt;br /&gt;
; Port Control Register&lt;br /&gt;
: Per-port configuration&lt;br /&gt;
: Address window setup&lt;br /&gt;
: Base address and limit configuration&lt;br /&gt;
&lt;br /&gt;
; Master/Port Status Registers&lt;br /&gt;
: Status flags and error indicators&lt;br /&gt;
: Memory test results&lt;br /&gt;
: Port state monitoring&lt;br /&gt;
&lt;br /&gt;
; Test/Debug Support&lt;br /&gt;
: Test request registers&lt;br /&gt;
: Test data and address registers&lt;br /&gt;
: Memory display/dump capability&lt;br /&gt;
: Error memory access&lt;br /&gt;
&lt;br /&gt;
== Programming Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Common Operations ===&lt;br /&gt;
&lt;br /&gt;
CONFIGURATE-SLOT: Set up memory slots and window boundaries&lt;br /&gt;
LIST-CONFIGURATION: Display current memory configuration&lt;br /&gt;
MEMORY-TEST: Run diagnostic memory tests&lt;br /&gt;
MEMORY-DUMP: Examine memory contents&lt;br /&gt;
INVESTIGATE-BANK: Analyze bank status and limits&lt;br /&gt;
AUTOINITIATE-BANK: Auto-initialize new banks&lt;br /&gt;
&lt;br /&gt;
=== Error Handling ===&lt;br /&gt;
&lt;br /&gt;
* Error logging to memory with address/data capture&lt;br /&gt;
* Error table suppression for known failures&lt;br /&gt;
* Interrupt-driven error notification&lt;br /&gt;
* Error investigator diagnostics&lt;br /&gt;
&lt;br /&gt;
=== System Startup ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cold Start&amp;#039;&amp;#039;&amp;#039;: Full initialization of all banks&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warm Start&amp;#039;&amp;#039;&amp;#039;: Re-initialization after restart&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;System Expansion&amp;#039;&amp;#039;&amp;#039;: Adding banks or ports dynamically&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Termination&amp;#039;&amp;#039;&amp;#039;: Graceful shutdown procedures&lt;br /&gt;
&lt;br /&gt;
== Multiport Memory Evolution ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Generation !! Memory Unit !! Used In !! Status&lt;br /&gt;
|-&lt;br /&gt;
| MPM-3 || 16KW per module || Early ND-100 || Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| MPM-4 || 32KW per module || Mid ND-100 era || Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;MPM-5&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;64KW banks, 256 banks max&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;ND-100, ND-500, ND-500-II&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Last of the classic generation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| MFbus || (successor) || ND-5000 || Modern replacement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Introduction to multiport concepts documented in [[ND-10.006]]&amp;lt;ref name=&amp;quot;channel&amp;quot;/&amp;gt; (Multiport Memory Channel Specifications)&lt;br /&gt;
&lt;br /&gt;
Internal bus architecture documented in ND-10.005&amp;lt;ref name=&amp;quot;bus&amp;quot;/&amp;gt; (Multiport Memory 5 Bus Description)&lt;br /&gt;
&lt;br /&gt;
== Synchronization Primitives ==&lt;br /&gt;
&lt;br /&gt;
MPM-5 provided low-level synchronization for multi-processor systems:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Atomic test-and-set operations&amp;#039;&amp;#039;&amp;#039; for semaphores&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Mailbox mechanisms&amp;#039;&amp;#039;&amp;#039; for inter-CPU messages&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Interrupt signaling&amp;#039;&amp;#039;&amp;#039; via shared flags&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TSET instructions&amp;#039;&amp;#039;&amp;#039; for mutual exclusion (ND-500/ND-100)&lt;br /&gt;
&lt;br /&gt;
Before [[NUCLEUS]] formalized message passing, MPM-5 was the foundation for all [[ND-500]] / [[ND-100]] inter-processor communication.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ND-100]] — Primary processor using MPM-5&lt;br /&gt;
* [[ND-500]] — 32-bit coprocessor for MPM-5&lt;br /&gt;
* [[ND-500-II]] — ND-500 with OCTOBUS using MPM-5&lt;br /&gt;
* [[NUCLEUS]] — Message-passing runtime built on MPM-5 (ND-500-II/ND-5000)&lt;br /&gt;
* [[MFbus]] — Modern successor to MPM-5 (ND-5000)&lt;br /&gt;
* [[OCTOBUS]] — Serial signaling complement to MPM-5&lt;br /&gt;
* [[Multiport Memory]] — General concept and alternatives&lt;br /&gt;
&lt;br /&gt;
== Product Numbers ==&lt;br /&gt;
&lt;br /&gt;
* Manual: &amp;#039;&amp;#039;&amp;#039;ND-10.004.01&amp;#039;&amp;#039;&amp;#039; (MPM-5 Technical Description, June 1984)&lt;br /&gt;
* Related specs: &amp;#039;&amp;#039;&amp;#039;ND-10.005&amp;#039;&amp;#039;&amp;#039; (Bus Description), &amp;#039;&amp;#039;&amp;#039;ND-10.006&amp;#039;&amp;#039;&amp;#039; (Channel Specifications)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;technical&amp;quot;&amp;gt;Norsk Data Document &amp;#039;&amp;#039;&amp;#039;ND-10.004.01&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;MPM 5 Technical Description&amp;#039;&amp;#039;, June 1984&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;nd100&amp;quot;&amp;gt;Norsk Data Document &amp;#039;&amp;#039;&amp;#039;ND-06.015&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;ND-100 Functional Description&amp;#039;&amp;#039; — MPM-5 integration in ND-100 systems&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;nd500&amp;quot;&amp;gt;Norsk Data Document &amp;#039;&amp;#039;&amp;#039;ND-05.011&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;ND-500 Hardware Description&amp;#039;&amp;#039; — MPM-5 integration in ND-500 systems&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;channel&amp;quot;&amp;gt;Norsk Data Document &amp;#039;&amp;#039;&amp;#039;ND-10.006&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Multiport Memory Channel Specifications&amp;#039;&amp;#039; — General multiport memory concepts&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;bus&amp;quot;&amp;gt;Norsk Data Document &amp;#039;&amp;#039;&amp;#039;ND-10.005&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Multiport Memory 5 Bus Description&amp;#039;&amp;#039; — Controller module and internal bus&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentation list-Memory Systems#ND-10.004_MPM-5_Technical_Description|ND-10.004.01 MPM-5 Technical Description]]&lt;br /&gt;
* [[Documentation list-Memory Systems#ND-10.005_MPM-5_Bus_Description|ND-10.005 Multiport Memory 5 Bus Description]]&lt;br /&gt;
* [[Documentation list-Memory Systems#ND-10.006_Multiport_Memory_Channel_Specifications|ND-10.006 Multiport Memory Channel Specifications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Memory Systems]]&lt;br /&gt;
[[Category:ND-100]]&lt;br /&gt;
[[Category:ND-500]]&lt;br /&gt;
[[Category:Multi-processor Systems]]&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>RHansen</name></author>
	</entry>
</feed>