The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
* [TUHS] Re: Early multiprocessor Unix
@ 2022-11-30  2:55 Rudi Blom
  0 siblings, 0 replies; 18+ messages in thread
From: Rudi Blom @ 2022-11-30  2:55 UTC (permalink / raw)
  To: tuhs

[-- Attachment #1: Type: text/plain, Size: 612 bytes --]

Around 1985 the computer division of Philips Electronics had a Moterola
68010 based server running MPX (Multi Processor Unix) based on System 5.3
with modification. The 'Multi' part was related to the intelligent LAN and
WAN controllers each with their own 68010 processor and memory. A separate
system image would be downloaded at server boot-time. Truly Multi-Processor
:-)

Here an announcement of the latest (probably last) model, from 1988.
https://techmonitor.ai/technology/philips_ready_with_68030_models_for_its_p9000_unix_workstation_family

-- 
The more I learn the better I understand I know nothing.

[-- Attachment #2: Type: text/html, Size: 912 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 14:13   ` Clem Cole
  2022-11-28 14:19     ` Warner Losh
@ 2023-08-06 14:19     ` Warner Losh
  1 sibling, 0 replies; 18+ messages in thread
From: Warner Losh @ 2023-08-06 14:19 UTC (permalink / raw)
  To: Clem Cole; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 951 bytes --]

On Mon, Nov 28, 2022 at 7:15 AM Clem Cole <clemc@ccc.com> wrote:

> Paul, the other thing I should point out -- ghg's work was
> widely distributed amount the BSD licenses. I somewhat wonder why the Naval
> Post Grad school's work was not.   My guess is that USENIX was still in its
> formative stages when the latter did their work, whereas, by the time of
> George's hack, BSD/Vaxen was being used for teaching as University
> timesharing systems so his 'upgrade' was a cheap solution.
> ᐧ
>

Also the Naval Post Grad work was on a fairly specialized MP pdp-11/50
system that wasn't super easy to build... plus the paper was declassified,
but it's not clear that the code ever was, or even submitted for
declassification. It was super early still in the unix sharing culture
evolution and wide-spread distribution didn't catch on. Plus, it was for a
funky odd custom thing, which limited people wanting to ask for it.

Warner

[-- Attachment #2: Type: text/html, Size: 1699 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 14:05 ` Clem Cole
                     ` (2 preceding siblings ...)
  2022-11-28 16:30   ` Paul Winalski
@ 2023-08-06 14:12   ` Warner Losh
  3 siblings, 0 replies; 18+ messages in thread
From: Warner Losh @ 2023-08-06 14:12 UTC (permalink / raw)
  To: Clem Cole; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 521 bytes --]

On Mon, Nov 28, 2022 at 7:07 AM Clem Cole <clemc@ccc.com> wrote:

> As far as I know, the first non-commercial work was done at the Naval Post
> Grad school with V6.  I have never seen the code for it, only a paper, so I
> don't know too much about it to comment.
>

The data of the paper suggests a V5 base since the paper is 1 month after
the V6 release. I couple of us tried to track down the author and/or
advisors and found one retired who said that code is long gone and he
couldn't help me.

Warner

[-- Attachment #2: Type: text/html, Size: 957 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2023-08-05 23:00 ` scj
                     ` (2 preceding siblings ...)
  2023-08-06  9:28   ` Ronald Natalie
@ 2023-08-06  9:57   ` Ralph Corderoy
  3 siblings, 0 replies; 18+ messages in thread
From: Ralph Corderoy @ 2023-08-06  9:57 UTC (permalink / raw)
  To: scj; +Cc: The Eunuchs Hysterical Society

Hi Steve,

> We built an "editor" for a.out files that would read the file in,
> respond to a series of requests, relocate the instructions correctly,
> and then branch to the line of code that it had been about to execute.  

What level of granuality were these requests?  Could you give a rough
example or two.  Was it sed like, with labels and testing branches?  Did
the requests operate on matched instructions instead of lines?

-- 
Cheers, Ralph.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2023-08-05 23:00 ` scj
  2023-08-06  0:54   ` Larry McVoy
  2023-08-06  6:52   ` Paul Ruizendaal
@ 2023-08-06  9:28   ` Ronald Natalie
  2023-08-06  9:57   ` Ralph Corderoy
  3 siblings, 0 replies; 18+ messages in thread
From: Ronald Natalie @ 2023-08-06  9:28 UTC (permalink / raw)
  To: scj, The Eunuchs Hysterical Society

The first foray into multiprocessor UNIX for us was to build one of the 
Purdue University dual vaxes (where they took the SBI terminator out, 
built some special cables to flipped around, and to stick a second CPU 
in that location.    Not too much later we got a multiprocessor Gould 
SEL machine (also with Purdue’s hack to BSD as the OS).

BRL had contracted to buy a Denelcor HEP, which was a MIMD machine 
capable of running 32 or so parallel tasks.    Each one could be divided 
into multiple processes (what we would call a thread the days).   The 
regular memory had a semaphore per word (called a full-empty bit) that 
allowed you to create a bunch of threads and let the hardware itself 
schedule them.    There were four Process Execution Modules (each with 8 
processors) that were interconnected by a fast memory switch, alll 10800 
ECL.

The thing was booted up from a PDP-11/34 front end through an interface 
aptly named the “low speed bus”.    Mike Muuss suggested we could put 
UNIX on the thing and nobody could come up with a reason why not, so we 
ported the same 4 BSD kernel that the dual vaxes were using.   Oddly, 
there were some bad things in the BSD kernel that needed to be fixed 
(notably “conversion by union” that wouldn’t work on this architecture). 
     After the initial boot up, we found that the thing couldn’t run 
I/O’s very quickly as they I/Os were routed through the “low speed bus.” 
     The hardware designer (Burton Smith) and me literally designed a new 
I/O interface on napkins at the local steakhouse, the Golden Corral, and 
built the thing out of spare parts.     I donated another PDP-11/34 to 
the task.

The I/O system was a fun system, the thing had 32 Unibuses connected to 
a memory cache for the main processor.    You could hit the CSRs on the 
Unibuses virtually through mapped memory addresses.    Interrupts 
weren’t the traditional sense but rather a new kernel task was spawned 
to handle it.

-Ron


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2023-08-05 23:00 ` scj
  2023-08-06  0:54   ` Larry McVoy
@ 2023-08-06  6:52   ` Paul Ruizendaal
  2023-08-06  9:28   ` Ronald Natalie
  2023-08-06  9:57   ` Ralph Corderoy
  3 siblings, 0 replies; 18+ messages in thread
From: Paul Ruizendaal @ 2023-08-06  6:52 UTC (permalink / raw)
  To: tuhs

Thank you for sharing, very interesting context info!

It would seem to me that there was only limited work on multi-processor Unix prior to 1985, with the work by Bach/Buroff/Kelleman around 1983 being the defining effort.

When I was doing my thesis with Prof. Van de Goor (who had earlier worked at DEC with the PDP-8 and PDP-11 design teams), another student down the corridor was working on multi-processor Unix ca. 1984-1985. There is a short paper about that work here https://dl.acm.org/doi/pdf/10.1145/6592.6598

From today’s perspective the paper’s conclusions seem odd. It describes going through the source code end-to-end as a huge job, but the core SysIII kernel is only some 7,000 sloc, with maybe two dozen shared data structures. On the other hand, with the tooling of the early 1980’s debugging this stuff must have been very hard. In contrast, on my porting projects today it is very easy to generate a kernel trace for millions of instructions in a few seconds. Even billions is do-able. The edit/compile/test cycle for a kernel with some debug test code compiled in is similarly a matter of seconds. A single test must have taken an hour or more back in the day, assuming that one had exclusive access to the machine.

Also its observation that the Unix kernel is “not highly structured” seems unfair. I find the 1980-era Unix kernel rather well structured, with the exception of the memory management code which is indeed spread out over multiple files making it not so easy to fully grasp. Maybe this was what my fellow student was referring to in his MSc thesis. Also note that a Dutch MSc thesis only took 6-12 months.


> On 6 Aug 2023, at 06:00, scj@yaccman.com wrote:
> 
> When I left Bell Labs in 1986, I joined Ardent Computer in California.  We built a multiprocessor Unix system with up to four processors based on ECL technology (faster than the computer chips of the time).  The CPU had a standard set of registers, and there were four vector registers that would hold 1000 floating-point numbers and vector instructions to do arithmetic.
> So that meant that we had compiler work to do.  Luckily, Randy Allen had just graduated and signed on to do the parallelism.  I took on the job of doing the assembler, loader, parallelizing C and FORTRAN compilers, and I did the lower-level stuff: assembler, loader,
> designed the a.out format, and even wrote a bug tracking system.  Randy's compiler was excellent, but there were other problems.  The Sun workstations had some quirks: from time to time they would page in a page of all zeros due to a timing problem.  Unhappily, the zero was the halt operation!  We addressed that by adding code to the Kernel the verify that no code page was all 0's before executing.   AT&T and Sun and MIPS and all the hardware makers have problems like this with early chips.  One thing I had told the team from the beginning was that we were going to have to patch hardware problems in the early versions.
> 
> The most serious early hardware bug in our machine was that when the MIPS chip had a page fault, the CPU started executing the new page before it was all present.  It only missed the first two or three instructions.  We settled on a strategy to generate the a.out file so that the first 4 instructions were all No-Ops.  This solved the MIPS problem.
> 
> Now we faced the problem of how do we take a standard a.out format and redo it so that the first four instructions in each code page are NOPs.  We built an "editor" for a.out files that would read the file in, respond to a series of requests, relocate the instructions correctly, and then branch to the line of code that it had been about to execute.  One good thing about this was that when the chip got fixed we would not have to change any code -- it would just work.
> 
> And then we got creative.  We could use the "editor" to find the basic blocks in the code, introduce counting instructions at the head of each block, and produce a profiler by recompiling.  We probably found about 20 things we could do with this mechanism, including optimization after loading, timing the code without having to recompile everything, collecting parallelism statistics, etc.
> 
> 
> ---
> 
> 
> On 2022-11-28 05:24, Paul Ruizendaal wrote:
>> The discussion about the 3B2 triggered another question in my head:
>> what were the earliest multi-processor versions of Unix and how did
>> they relate?
>> My current understanding is that the earliest one is a dual-CPU VAX
>> system with a modified 4BSD done at Purdue. This would have been late
>> 1981, early 1982. I think one CPU was acting as master and had
>> exclusive kernel access, the other CPU would only run user mode code.
>> Then I understand that Keith Kelleman spent a lot of effort to make
>> Unix run on the 3B2 in a SMP setup, essentially going through the
>> source and finding all critical sections and surrounding those with
>> spinlocks. This would be around 1983, and became part of SVr3. I
>> suppose that the “spl()” calls only protected critical sections that
>> were shared between the main thread and interrupt sequences, so that a
>> manual review was necessary to consider each kernel data structure for
>> parallel access issues in the case of 2 CPU’s.
>> Any other notable work in this area prior to 1985?
>> How was the SMP implementation in SVr3 judged back in its day?
>> Paul


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2023-08-05 23:00 ` scj
@ 2023-08-06  0:54   ` Larry McVoy
  2023-08-06  6:52   ` Paul Ruizendaal
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 18+ messages in thread
From: Larry McVoy @ 2023-08-06  0:54 UTC (permalink / raw)
  To: scj; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

On Sat, Aug 05, 2023 at 04:00:55PM -0700, scj@yaccman.com wrote:
> The Sun workstations
> had some quirks: from time to time they would page in a page of all zeros
> due to a timing problem.  

Was this over NFS?  Because that was a thing.  Paging in from disc I've
never heard of this.

BTW, scj, loving your walk through history.  I'd love to read drafts of
your management book.  My entire career I waited to meet a person that 
got as much joy out of managing as I got out of engineering.  

Still waiting.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 13:24 [TUHS] " Paul Ruizendaal
                   ` (3 preceding siblings ...)
  2022-11-29  9:39 ` Jonathan Gray
@ 2023-08-05 23:00 ` scj
  2023-08-06  0:54   ` Larry McVoy
                     ` (3 more replies)
  4 siblings, 4 replies; 18+ messages in thread
From: scj @ 2023-08-05 23:00 UTC (permalink / raw)
  To: Paul Ruizendaal; +Cc: The Eunuchs Hysterical Society

When I left Bell Labs in 1986, I joined Ardent Computer in California.  
We built a multiprocessor Unix system with up to four processors based 
on ECL technology (faster than the computer chips of the time).  The CPU 
had a standard set of registers, and there were four vector registers 
that would hold 1000 floating-point numbers and vector instructions to 
do arithmetic.
So that meant that we had compiler work to do.  Luckily, Randy Allen had 
just graduated and signed on to do the parallelism.  I took on the job 
of doing the assembler, loader, parallelizing C and FORTRAN compilers, 
and I did the lower-level stuff: assembler, loader,
designed the a.out format, and even wrote a bug tracking system.  
Randy's compiler was excellent, but there were other problems.  The Sun 
workstations had some quirks: from time to time they would page in a 
page of all zeros due to a timing problem.  Unhappily, the zero was the 
halt operation!  We addressed that by adding code to the Kernel the 
verify that no code page was all 0's before executing.   AT&T and Sun 
and MIPS and all the hardware makers have problems like this with early 
chips.  One thing I had told the team from the beginning was that we 
were going to have to patch hardware problems in the early versions.

The most serious early hardware bug in our machine was that when the 
MIPS chip had a page fault, the CPU started executing the new page 
before it was all present.  It only missed the first two or three 
instructions.  We settled on a strategy to generate the a.out file so 
that the first 4 instructions were all No-Ops.  This solved the MIPS 
problem.

Now we faced the problem of how do we take a standard a.out format and 
redo it so that the first four instructions in each code page are NOPs.  
We built an "editor" for a.out files that would read the file in, 
respond to a series of requests, relocate the instructions correctly, 
and then branch to the line of code that it had been about to execute.  
One good thing about this was that when the chip got fixed we would not 
have to change any code -- it would just work.

And then we got creative.  We could use the "editor" to find the basic 
blocks in the code, introduce counting instructions at the head of each 
block, and produce a profiler by recompiling.  We probably found about 
20 things we could do with this mechanism, including optimization after 
loading, timing the code without having to recompile everything, 
collecting parallelism statistics, etc.


---


On 2022-11-28 05:24, Paul Ruizendaal wrote:
> The discussion about the 3B2 triggered another question in my head:
> what were the earliest multi-processor versions of Unix and how did
> they relate?
> 
> My current understanding is that the earliest one is a dual-CPU VAX
> system with a modified 4BSD done at Purdue. This would have been late
> 1981, early 1982. I think one CPU was acting as master and had
> exclusive kernel access, the other CPU would only run user mode code.
> 
> Then I understand that Keith Kelleman spent a lot of effort to make
> Unix run on the 3B2 in a SMP setup, essentially going through the
> source and finding all critical sections and surrounding those with
> spinlocks. This would be around 1983, and became part of SVr3. I
> suppose that the “spl()” calls only protected critical sections that
> were shared between the main thread and interrupt sequences, so that a
> manual review was necessary to consider each kernel data structure for
> parallel access issues in the case of 2 CPU’s.
> 
> Any other notable work in this area prior to 1985?
> 
> How was the SMP implementation in SVr3 judged back in its day?
> 
> Paul

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 13:24 [TUHS] " Paul Ruizendaal
                   ` (2 preceding siblings ...)
  2022-11-28 16:52 ` Jonathan Gray
@ 2022-11-29  9:39 ` Jonathan Gray
  2023-08-05 23:00 ` scj
  4 siblings, 0 replies; 18+ messages in thread
From: Jonathan Gray @ 2022-11-29  9:39 UTC (permalink / raw)
  To: Paul Ruizendaal; +Cc: tuhs

On Mon, Nov 28, 2022 at 02:24:52PM +0100, Paul Ruizendaal wrote:
> The discussion about the 3B2 triggered another question in my head: what were the earliest multi-processor versions of Unix and how did they relate?
> 
> My current understanding is that the earliest one is a dual-CPU VAX system with a modified 4BSD done at Purdue. This would have been late 1981, early 1982. I think one CPU was acting as master and had exclusive kernel access, the other CPU would only run user mode code.
> 
> Then I understand that Keith Kelleman spent a lot of effort to make Unix run on the 3B2 in a SMP setup, essentially going through the source and finding all critical sections and surrounding those with spinlocks. This would be around 1983, and became part of SVr3. I suppose that the “spl()” calls only protected critical sections that were shared between the main thread and interrupt sequences, so that a manual review was necessary to consider each kernel data structure for parallel access issues in the case of 2 CPU’s.
> 
> Any other notable work in this area prior to 1985?

Sequent Balance 8000 from 1984 had up to 12 National NS32000 processors
and ran the 4.2BSD derived DYNIX.

Bob Beck, Bob Kasten
VLSI Assist in Building a Multiprocessor UNIX System
USENIX 1985 Summer Conference Proceedings
https://archive.org/details/1985-proceedings-summer-portland/page/254/mode/2up

National had their own 4.1BSD derived GENIX.  I can't find any
references to it running on multiprocessor machines.

Gould PowerNode 9080, a dual processor machine was announced in 1984 and
ran a 4.2BSD derived UTX/32.
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=1659257

Pyramid Technology, 90Mx dual processor early 1985, 98x late 1985
https://archive.org/details/sim_systems-software_1985-02_4_2/page/n37/mode/2up
Systems & Software  1985-02: Vol 4 Iss 2
"The new 90Mx, the first dual-processor machine from Pyramid, can
support up to 256 users.  It has a maximum of 32 megabytes of main
memory, and comes in one single-cabinet and three dual-cabinet
configurations.  The 90x, first shipped in October 1983, is limited
to 128 users and 16 megabyte of main memory as a single processor
machine.  Like the 90x, the 90Mx uses the reduced instruction set
computer architecture (RISC)."
"OSx is Pyramid's dual-port, multi-processor implementation of
Unix System V from AT&T and 4.2BSD from the University of California,
Berkeley."

https://archive.org/details/Unix_Review_1985_Aug.pdf/page/n9/mode/2up
Unix Review Magazine Aug 1985
"One of the more impressive machines making its debut at the National
Computer Conference in Chicago July 16 was Pyramid Technology Corp’s
98x, a super minicomputer built with the idea of equal opportunity for
equal microprocessors. Pyramid calls the 98x an "isoprocessor" system;
there are two 32-bit RISC (reduced instruction set computer) processors
working as equal partners."
"The idea behind isoprocessing comes from Purdue’s dual processor
implementation, Krahling said. CPU balance is achieved through the use
of a proprietary semaphore system that protects critical sequences of
code and controls simultaneous access to kernel data structures."
"90Mx has a master-slave multiprocessor environment."

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 13:24 [TUHS] " Paul Ruizendaal
  2022-11-28 13:42 ` [TUHS] " Larry Stewart
  2022-11-28 14:05 ` Clem Cole
@ 2022-11-28 16:52 ` Jonathan Gray
  2022-11-29  9:39 ` Jonathan Gray
  2023-08-05 23:00 ` scj
  4 siblings, 0 replies; 18+ messages in thread
From: Jonathan Gray @ 2022-11-28 16:52 UTC (permalink / raw)
  To: Paul Ruizendaal; +Cc: tuhs

On Mon, Nov 28, 2022 at 02:24:52PM +0100, Paul Ruizendaal wrote:
> The discussion about the 3B2 triggered another question in my head: what were the earliest multi-processor versions of Unix and how did they relate?
> 
> My current understanding is that the earliest one is a dual-CPU VAX system with a modified 4BSD done at Purdue. This would have been late 1981, early 1982. I think one CPU was acting as master and had exclusive kernel access, the other CPU would only run user mode code.
> 
> Then I understand that Keith Kelleman spent a lot of effort to make Unix run on the 3B2 in a SMP setup, essentially going through the source and finding all critical sections and surrounding those with spinlocks. This would be around 1983, and became part of SVr3. I suppose that the “spl()” calls only protected critical sections that were shared between the main thread and interrupt sequences, so that a manual review was necessary to consider each kernel data structure for parallel access issues in the case of 2 CPU’s.
> 
> Any other notable work in this area prior to 1985?

HP-UX on FOCUS/series 500?
https://www.openpa.net/systems/hp-9000_520.html

https://www.tuhs.org/Archive/Documentation/AUUGN/AUUGN-V05.3.pdf
Jeff Lindberg
A Layered Implementation of the UNIX Kernel on the HP9000 Series 500
Computer

"The HP9000 Series 500 computers are based on a proprietary 32 bit
microprocessor chip set with stack architecture. It has user-transparent
multi-CPU support, for which they included semaphores and a very
carefully worked out scheduler.

HP-UX is based on top of an operating system called SUN (no relation to
Sun Microsystems Inc.). The SUN operating system was intended to be a
modern operating system to support HP's desktop BASIC system. As
designed, though, it turns out to be language independent, and had
several other features that made it attractive as a base upon which to
build a UNIX implementation."

https://archive.org/details/1983-proceedings-unicom-san-diego/page/119/mode/2up
Frederick W. Clegg
Hewlett-Packard’s Entry into the UNIX Community

"Several motivations prompted this somewhat unconventional
implementation of the HP-UX kernel on the HP 9000. It should be
understood that much of the low- level, machine-dependent software for
the HP 9000 was complete before a final commitment was made to offer
UNIX on this product line. Thus reinvention of device and interface
drivers, low-level memory management routines, power-up code, and
architecturally-dependent utility routines was avoided by this approach.
Additionally, this approach permitted leverage of software developed to
support graphics and database management from the BASIC environment.

Additionally, SUN has a number of features which are not present in AT&T
UNIX. These provide opportunities for HP-UX to make a contribution above
and beyond other UNIX implementations. Such features include real-time
performance in the area of interrupt response time and process
switching, support for multiple processors, and reliability in the face
of system errors."

some more details in
https://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1984-03.pdf
HP Journal, March 1984, Volume 35, Number 3

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 16:30   ` Paul Winalski
@ 2022-11-28 16:49     ` Clem Cole
  0 siblings, 0 replies; 18+ messages in thread
From: Clem Cole @ 2022-11-28 16:49 UTC (permalink / raw)
  To: Paul Winalski; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 369 bytes --]

On Mon, Nov 28, 2022 at 11:30 AM Paul Winalski <paul.winalski@gmail.com>
wrote:

> > configuration. He spliced a second 780 CPU onto the SMB
>
> SBI (Synchronous Backplane Interconnect),
>
right SBI -- thanks, Paul -- too many TLAs - bad cache refill.


>
> I don't know if Ultrix ever supported the 11/782.
>
no - the Ultrix group never bothered.

ᐧ

[-- Attachment #2: Type: text/html, Size: 1569 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 14:05 ` Clem Cole
  2022-11-28 14:13   ` Clem Cole
  2022-11-28 14:16   ` Warner Losh
@ 2022-11-28 16:30   ` Paul Winalski
  2022-11-28 16:49     ` Clem Cole
  2023-08-06 14:12   ` Warner Losh
  3 siblings, 1 reply; 18+ messages in thread
From: Paul Winalski @ 2022-11-28 16:30 UTC (permalink / raw)
  To: Clem Cole; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

On 11/28/22, Clem Cole <clemc@ccc.com> wrote:
>
> A few years later (1980), Goble's work became the Purdue Vax [
> https://en.wikipedia.org/wiki/George_H._Goble] - which used a master-slave
> configuration. He spliced a second 780 CPU onto the SMB

SBI (Synchronous Backplane Interconnect), the data bus for the 11/780.
The KA780 CPU plugged into it, as did the memory controller, the UBA
(UNIBUS adapter), the MBA (MASSBUS adapter), and the CI (Computer
Interconnect, the high-speed network used for VAXcluster
communication).

> and, with some
> interesting work, allowed the second CPU to run user code.  This was
> extremely effective for their usage case -- timesharing of students.

Normally only one KA780 CPU was attached to the SBI, but there was
nothing physical or electronic to prevent plugging in a second one.
IIRC there were a couple of places in the 11/780 microcode that
assumed there was only one CPU on the SBI, but that was easily
tweaked.  DEC productized the two-processor asymmetric multiprocessor
configuration as the VAX-11/782.  The software development tools group
that I worked in was one of the two beta test sites for the 782 (the
other was MIT).  I was the system manager for that machine.  Ours ran
VMS, of course, not Unix, but with the same idea that only user mode
code was scheduled to run on the second processor.  All I/O and kernel
mode code was done on the primary.  It scaled pretty well for
compute-intensive loads.  It actually ran slower than a single
processor under high I/O loads, though, and it gave no advantage to
real-time workloads.

I don't know if Ultrix ever supported the 11/782.  The product had a
rather short lifetime, as it was soon superseded by VAX models that
were designed for symmetric multiprocessing from the ground up, and
full SMP support had been implemented in VMS and Ultrix.

-Paul W.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 14:16   ` Warner Losh
@ 2022-11-28 14:50     ` Clem Cole
  0 siblings, 0 replies; 18+ messages in thread
From: Clem Cole @ 2022-11-28 14:50 UTC (permalink / raw)
  To: Warner Losh; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 859 bytes --]

On Mon, Nov 28, 2022 at 9:16 AM Warner Losh <imp@bsdimp.com> wrote:

>
>
> On Mon, Nov 28, 2022, 7:07 AM Clem Cole <clemc@ccc.com> wrote:
>
>> As far as I know, the first non-commercial work was done at the Naval
>> Post Grad school with V6.  I have never seen the code for it, only a paper,
>> so I don't know too much about it to comment.
>>
>
> I tried to find the code a couple of years ago, but no joy. And the timing
> suggested he may have started with/used V5, since the paper is dated June
> 75 and V6 was released in May 75.
>
Thanks - that makes sense.   As I said, I never saw the code, and again, it
agrees with my observation that this was 'pre-USENIX,' particularly since I
believe that those folks are in CA and the original USENIX people were in
NYC and Boston folks, so they would have been less likely to be a part.
ᐧ

[-- Attachment #2: Type: text/html, Size: 2042 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 14:13   ` Clem Cole
@ 2022-11-28 14:19     ` Warner Losh
  2023-08-06 14:19     ` Warner Losh
  1 sibling, 0 replies; 18+ messages in thread
From: Warner Losh @ 2022-11-28 14:19 UTC (permalink / raw)
  To: Clem Cole; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 3416 bytes --]

On Mon, Nov 28, 2022, 7:15 AM Clem Cole <clemc@ccc.com> wrote:

> Paul, the other thing I should point out -- ghg's work was
> widely distributed amount the BSD licenses. I somewhat wonder why the Naval
> Post Grad school's work was not.   My guess is that USENIX was still in its
> formative stages when the latter did their work, whereas, by the time of
> George's hack, BSD/Vaxen was being used for teaching as University
> timesharing systems so his 'upgrade' was a cheap solution.
> ᐧ
>


I know the Perdue work on Kirk's DVD collection....

Warner

Warner

On Mon, Nov 28, 2022 at 9:05 AM Clem Cole <clemc@ccc.com> wrote:
>
>> As far as I know, the first non-commercial work was done at the Naval
>> Post Grad school with V6.  I have never seen the code for it, only a paper,
>> so I don't know too much about it to comment.
>>
>> A few years later (1980), Goble's work became the Purdue Vax [
>> https://en.wikipedia.org/wiki/George_H._Goble] - which used a
>> master-slave configuration. He spliced a second 780 CPU onto the SMB and,
>> with some interesting work, allowed the second CPU to run user code.  This
>> was extremely effective for their usage case -- timesharing of students.
>> If we don't have the code on TUHS, we should probably dig it up, as it was
>> widely distributed. The other thing he did was splice an 11/40 onto the UBA
>> of the same system for debugging - which was a pretty cool hack.  He found
>> a couple of interesting BSD kernel issues, including a famous CVE using his
>> real-time monitor -- there is a USENIX paper on that tool that is work
>> checking out.
>>
>> The first commercial MP Unix was the Masscomp MC500/MP, which was
>> originally developed as Goble-style Master/Slave and released in RTU 2.0.
>> A year later, with RTU 3.0 and the release of the MC5000 family, it was
>> fully SMP.
>>
>> After that, several SMP UNIX started to appear.   Each uses its own lock
>> scheme.   If you are interested, I recommend getting a copy of Schimmel's
>> book: 'Unix on Modern Processors' which discusses many (most) of the
>> challenges.
>>
>>
>> ᐧ
>>
>> On Mon, Nov 28, 2022 at 8:25 AM Paul Ruizendaal <pnr@planet.nl> wrote:
>>
>>> The discussion about the 3B2 triggered another question in my head: what
>>> were the earliest multi-processor versions of Unix and how did they relate?
>>>
>>> My current understanding is that the earliest one is a dual-CPU VAX
>>> system with a modified 4BSD done at Purdue. This would have been late 1981,
>>> early 1982. I think one CPU was acting as master and had exclusive kernel
>>> access, the other CPU would only run user mode code.
>>>
>>> Then I understand that Keith Kelleman spent a lot of effort to make Unix
>>> run on the 3B2 in a SMP setup, essentially going through the source and
>>> finding all critical sections and surrounding those with spinlocks. This
>>> would be around 1983, and became part of SVr3. I suppose that the “spl()”
>>> calls only protected critical sections that were shared between the main
>>> thread and interrupt sequences, so that a manual review was necessary to
>>> consider each kernel data structure for parallel access issues in the case
>>> of 2 CPU’s.
>>>
>>> Any other notable work in this area prior to 1985?
>>>
>>> How was the SMP implementation in SVr3 judged back in its day?
>>>
>>> Paul
>>
>>

[-- Attachment #2: Type: text/html, Size: 5996 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 14:05 ` Clem Cole
  2022-11-28 14:13   ` Clem Cole
@ 2022-11-28 14:16   ` Warner Losh
  2022-11-28 14:50     ` Clem Cole
  2022-11-28 16:30   ` Paul Winalski
  2023-08-06 14:12   ` Warner Losh
  3 siblings, 1 reply; 18+ messages in thread
From: Warner Losh @ 2022-11-28 14:16 UTC (permalink / raw)
  To: Clem Cole; +Cc: Paul Ruizendaal, The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 2973 bytes --]

On Mon, Nov 28, 2022, 7:07 AM Clem Cole <clemc@ccc.com> wrote:

> As far as I know, the first non-commercial work was done at the Naval Post
> Grad school with V6.  I have never seen the code for it, only a paper, so I
> don't know too much about it to comment.
>

I tried to find the code a couple of years ago, but no joy. And the timing
suggested he may have started with/used V5, since the paper is dated June
75 and V6 was released in May 75.

Warner

A few years later (1980), Goble's work became the Purdue Vax [
> https://en.wikipedia.org/wiki/George_H._Goble] - which used a
> master-slave configuration. He spliced a second 780 CPU onto the SMB and,
> with some interesting work, allowed the second CPU to run user code.  This
> was extremely effective for their usage case -- timesharing of students.
> If we don't have the code on TUHS, we should probably dig it up, as it was
> widely distributed. The other thing he did was splice an 11/40 onto the UBA
> of the same system for debugging - which was a pretty cool hack.  He found
> a couple of interesting BSD kernel issues, including a famous CVE using his
> real-time monitor -- there is a USENIX paper on that tool that is work
> checking out.
>
> The first commercial MP Unix was the Masscomp MC500/MP, which was
> originally developed as Goble-style Master/Slave and released in RTU 2.0.
> A year later, with RTU 3.0 and the release of the MC5000 family, it was
> fully SMP.
>
> After that, several SMP UNIX started to appear.   Each uses its own lock
> scheme.   If you are interested, I recommend getting a copy of Schimmel's
> book: 'Unix on Modern Processors' which discusses many (most) of the
> challenges.
>
>
> ᐧ
>
> On Mon, Nov 28, 2022 at 8:25 AM Paul Ruizendaal <pnr@planet.nl> wrote:
>
>> The discussion about the 3B2 triggered another question in my head: what
>> were the earliest multi-processor versions of Unix and how did they relate?
>>
>> My current understanding is that the earliest one is a dual-CPU VAX
>> system with a modified 4BSD done at Purdue. This would have been late 1981,
>> early 1982. I think one CPU was acting as master and had exclusive kernel
>> access, the other CPU would only run user mode code.
>>
>> Then I understand that Keith Kelleman spent a lot of effort to make Unix
>> run on the 3B2 in a SMP setup, essentially going through the source and
>> finding all critical sections and surrounding those with spinlocks. This
>> would be around 1983, and became part of SVr3. I suppose that the “spl()”
>> calls only protected critical sections that were shared between the main
>> thread and interrupt sequences, so that a manual review was necessary to
>> consider each kernel data structure for parallel access issues in the case
>> of 2 CPU’s.
>>
>> Any other notable work in this area prior to 1985?
>>
>> How was the SMP implementation in SVr3 judged back in its day?
>>
>> Paul
>
>

[-- Attachment #2: Type: text/html, Size: 4853 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 14:05 ` Clem Cole
@ 2022-11-28 14:13   ` Clem Cole
  2022-11-28 14:19     ` Warner Losh
  2023-08-06 14:19     ` Warner Losh
  2022-11-28 14:16   ` Warner Losh
                     ` (2 subsequent siblings)
  3 siblings, 2 replies; 18+ messages in thread
From: Clem Cole @ 2022-11-28 14:13 UTC (permalink / raw)
  To: Paul Ruizendaal; +Cc: The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 3200 bytes --]

Paul, the other thing I should point out -- ghg's work was
widely distributed amount the BSD licenses. I somewhat wonder why the Naval
Post Grad school's work was not.   My guess is that USENIX was still in its
formative stages when the latter did their work, whereas, by the time of
George's hack, BSD/Vaxen was being used for teaching as University
timesharing systems so his 'upgrade' was a cheap solution.
ᐧ

On Mon, Nov 28, 2022 at 9:05 AM Clem Cole <clemc@ccc.com> wrote:

> As far as I know, the first non-commercial work was done at the Naval Post
> Grad school with V6.  I have never seen the code for it, only a paper, so I
> don't know too much about it to comment.
>
> A few years later (1980), Goble's work became the Purdue Vax [
> https://en.wikipedia.org/wiki/George_H._Goble] - which used a
> master-slave configuration. He spliced a second 780 CPU onto the SMB and,
> with some interesting work, allowed the second CPU to run user code.  This
> was extremely effective for their usage case -- timesharing of students.
> If we don't have the code on TUHS, we should probably dig it up, as it was
> widely distributed. The other thing he did was splice an 11/40 onto the UBA
> of the same system for debugging - which was a pretty cool hack.  He found
> a couple of interesting BSD kernel issues, including a famous CVE using his
> real-time monitor -- there is a USENIX paper on that tool that is work
> checking out.
>
> The first commercial MP Unix was the Masscomp MC500/MP, which was
> originally developed as Goble-style Master/Slave and released in RTU 2.0.
> A year later, with RTU 3.0 and the release of the MC5000 family, it was
> fully SMP.
>
> After that, several SMP UNIX started to appear.   Each uses its own lock
> scheme.   If you are interested, I recommend getting a copy of Schimmel's
> book: 'Unix on Modern Processors' which discusses many (most) of the
> challenges.
>
>
> ᐧ
>
> On Mon, Nov 28, 2022 at 8:25 AM Paul Ruizendaal <pnr@planet.nl> wrote:
>
>> The discussion about the 3B2 triggered another question in my head: what
>> were the earliest multi-processor versions of Unix and how did they relate?
>>
>> My current understanding is that the earliest one is a dual-CPU VAX
>> system with a modified 4BSD done at Purdue. This would have been late 1981,
>> early 1982. I think one CPU was acting as master and had exclusive kernel
>> access, the other CPU would only run user mode code.
>>
>> Then I understand that Keith Kelleman spent a lot of effort to make Unix
>> run on the 3B2 in a SMP setup, essentially going through the source and
>> finding all critical sections and surrounding those with spinlocks. This
>> would be around 1983, and became part of SVr3. I suppose that the “spl()”
>> calls only protected critical sections that were shared between the main
>> thread and interrupt sequences, so that a manual review was necessary to
>> consider each kernel data structure for parallel access issues in the case
>> of 2 CPU’s.
>>
>> Any other notable work in this area prior to 1985?
>>
>> How was the SMP implementation in SVr3 judged back in its day?
>>
>> Paul
>
>

[-- Attachment #2: Type: text/html, Size: 5172 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 13:24 [TUHS] " Paul Ruizendaal
  2022-11-28 13:42 ` [TUHS] " Larry Stewart
@ 2022-11-28 14:05 ` Clem Cole
  2022-11-28 14:13   ` Clem Cole
                     ` (3 more replies)
  2022-11-28 16:52 ` Jonathan Gray
                   ` (2 subsequent siblings)
  4 siblings, 4 replies; 18+ messages in thread
From: Clem Cole @ 2022-11-28 14:05 UTC (permalink / raw)
  To: Paul Ruizendaal; +Cc: The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 2627 bytes --]

As far as I know, the first non-commercial work was done at the Naval Post
Grad school with V6.  I have never seen the code for it, only a paper, so I
don't know too much about it to comment.

A few years later (1980), Goble's work became the Purdue Vax [
https://en.wikipedia.org/wiki/George_H._Goble] - which used a master-slave
configuration. He spliced a second 780 CPU onto the SMB and, with some
interesting work, allowed the second CPU to run user code.  This was
extremely effective for their usage case -- timesharing of students.  If we
don't have the code on TUHS, we should probably dig it up, as it was widely
distributed. The other thing he did was splice an 11/40 onto the UBA of the
same system for debugging - which was a pretty cool hack.  He found a
couple of interesting BSD kernel issues, including a famous CVE using his
real-time monitor -- there is a USENIX paper on that tool that is work
checking out.

The first commercial MP Unix was the Masscomp MC500/MP, which was
originally developed as Goble-style Master/Slave and released in RTU 2.0.
A year later, with RTU 3.0 and the release of the MC5000 family, it was
fully SMP.

After that, several SMP UNIX started to appear.   Each uses its own lock
scheme.   If you are interested, I recommend getting a copy of Schimmel's
book: 'Unix on Modern Processors' which discusses many (most) of the
challenges.


ᐧ

On Mon, Nov 28, 2022 at 8:25 AM Paul Ruizendaal <pnr@planet.nl> wrote:

> The discussion about the 3B2 triggered another question in my head: what
> were the earliest multi-processor versions of Unix and how did they relate?
>
> My current understanding is that the earliest one is a dual-CPU VAX system
> with a modified 4BSD done at Purdue. This would have been late 1981, early
> 1982. I think one CPU was acting as master and had exclusive kernel access,
> the other CPU would only run user mode code.
>
> Then I understand that Keith Kelleman spent a lot of effort to make Unix
> run on the 3B2 in a SMP setup, essentially going through the source and
> finding all critical sections and surrounding those with spinlocks. This
> would be around 1983, and became part of SVr3. I suppose that the “spl()”
> calls only protected critical sections that were shared between the main
> thread and interrupt sequences, so that a manual review was necessary to
> consider each kernel data structure for parallel access issues in the case
> of 2 CPU’s.
>
> Any other notable work in this area prior to 1985?
>
> How was the SMP implementation in SVr3 judged back in its day?
>
> Paul

[-- Attachment #2: Type: text/html, Size: 3981 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [TUHS] Re: Early multiprocessor Unix
  2022-11-28 13:24 [TUHS] " Paul Ruizendaal
@ 2022-11-28 13:42 ` Larry Stewart
  2022-11-28 14:05 ` Clem Cole
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Larry Stewart @ 2022-11-28 13:42 UTC (permalink / raw)
  To: Paul Ruizendaal; +Cc: The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 1329 bytes --]

There's a 1975 paper about an MP Unix at the Naval Postgraduate School by Hawley and Meyer.

https://calhoun.nps.edu/handle/10945/20959


> On Nov 28, 2022, at 8:28 AM, Paul Ruizendaal <pnr@planet.nl> wrote:
> 
> The discussion about the 3B2 triggered another question in my head: what were the earliest multi-processor versions of Unix and how did they relate?
> 
> My current understanding is that the earliest one is a dual-CPU VAX system with a modified 4BSD done at Purdue. This would have been late 1981, early 1982. I think one CPU was acting as master and had exclusive kernel access, the other CPU would only run user mode code.
> 
> Then I understand that Keith Kelleman spent a lot of effort to make Unix run on the 3B2 in a SMP setup, essentially going through the source and finding all critical sections and surrounding those with spinlocks. This would be around 1983, and became part of SVr3. I suppose that the “spl()” calls only protected critical sections that were shared between the main thread and interrupt sequences, so that a manual review was necessary to consider each kernel data structure for parallel access issues in the case of 2 CPU’s.
> 
> Any other notable work in this area prior to 1985?
> 
> How was the SMP implementation in SVr3 judged back in its day?
> 
> Paul

[-- Attachment #2: Type: text/html, Size: 1871 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2023-08-06 14:19 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-30  2:55 [TUHS] Re: Early multiprocessor Unix Rudi Blom
  -- strict thread matches above, loose matches on Subject: below --
2022-11-28 13:24 [TUHS] " Paul Ruizendaal
2022-11-28 13:42 ` [TUHS] " Larry Stewart
2022-11-28 14:05 ` Clem Cole
2022-11-28 14:13   ` Clem Cole
2022-11-28 14:19     ` Warner Losh
2023-08-06 14:19     ` Warner Losh
2022-11-28 14:16   ` Warner Losh
2022-11-28 14:50     ` Clem Cole
2022-11-28 16:30   ` Paul Winalski
2022-11-28 16:49     ` Clem Cole
2023-08-06 14:12   ` Warner Losh
2022-11-28 16:52 ` Jonathan Gray
2022-11-29  9:39 ` Jonathan Gray
2023-08-05 23:00 ` scj
2023-08-06  0:54   ` Larry McVoy
2023-08-06  6:52   ` Paul Ruizendaal
2023-08-06  9:28   ` Ronald Natalie
2023-08-06  9:57   ` Ralph Corderoy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).