3 ms·
I'm working on a CM-2 emulator that I plan on releasing next year. I have some Paris (CM-2 'asm') executables and the 'coldboot' program running. The CM-2 is
by monocasa 3y ago
I'm working on a CM-2 emulator that I plan on releasing next year. I have some Paris (CM-2 'asm') executables and the 'coldboot' program running.
The CM-2 is probably my favorite arch I've come across wrt to 1980s architectures that are truly different experiences to what can be achieved with hardware you can buy today. It's the closest thing I've found to a zachtronics game that someone had the cajones to actually build. Really really really fun to code for.
Each of the four execution units has a 16,384 bit wide, single cycle access data path to RAM. Put that in your HBM and smoke it.
If anyone has any questions I'd love to challenge my understanding and attempt to answer (just take some of my answers with a grain of salt, as I'm still reverse engineering).
- convolvatron 3y agomail me at gmail if you want to talk paris. I spent a few years mostly writing paris and a little cmis. edit: oh, and I recently found the super secret cmis programming manual on line at https://www.rcsri.org/library/80s/CMIS-Reference-Manual.pdf https://www.rcsri.org/library/80s/CMIS-Reference-Manual.pdf
- jshaqaw 3y agoDo you have starlisp running?
- monocasa 3y agoI haven't attempted to yet. Most of my efforts have focused on running from the Cstar environment running on a sun4 frontend since those binaries and headers are a bit more conducive to reverse engineering with modern tooling like ghidra. Or at least that's what fits my RE skill set better. That being said I have a couple starlisp images for sun4 that should eventually run given the layer at which I'm targeting for the emulator. It's a.goal.to get them running, but hasn't reached the top of the priority queue yet. FWIW, tensorflow/pytorch are remarkably close to the vague vibe of starlisp.
- jshaqaw 3y agoI agree on the “vibe” there. In the mid-90s when I was in high school I got access to a cm-2 to figure out how to transform sparse matrices using genetic algorithms on that massively parallel architecture. Good times!
- pjmlp 3y agoGiven Peter Norvig opinion on Python vs Lisp, and the way Python has been taken up in AI/ML stuff, in a way it is a kind of Lisp's revenge. If only Python had the same machine code generation capabilities as Lisp based languages (in the reference implementation).
- timmg 3y agoObviously, please share when you do. Is the technical information needed readily available? Just curious. I took a parallel computing class decades ago in college and we programmed a Connection Machine. I think a CM-2. Maybe CM-1? IIRC, we used Fortran with some extensions. Was so cool and interesting. But never did touch one since…
- monocasa 3y ago> Obviously, please share when you do. Totes, I've time boxed my work to the end of next year for releasing. I basically want to get a good conference talk out of it for ol' CV. > Is the technical information needed readily available? It's available if you're willing to dig for it. There are tape images on bitsavers for a sun4 frontend. While being failed reads, I wrote some custom tooling to extract what I can. It looks like the vast majority of the failures were in a couple starlisp images for which I have a newer copy. Beyond that, man pages, header files, prelinked static libraries with a bunch of symbols, microcode images, administration utilities, config files, and source to the kernel driver which exposes the control signals and command fifos to user space are all available. That's in addition quite a bit of pdf documention. So the problem is more than tractable, there's just work involved at this point. The biggest piece missing is probably pictures of the processor, microcontroller, and backplane boards to better answer questions about the microcode. Everyone I've contacted with a CM-2 these days really only has the chassis and the blinkenlights. : /
- larsbrinkhoff 3y agoPut me on the mailing list!
- nonrandomstring 3y agoSomewhere out there is video footage of Hillis and some MIT bods wiring up the CM-1. Pretty sure it appears in Adam Curtis' "All watched over" doco. Looks like they're using wirewrap tools and literally doing point-to-point.
- watersb 3y agoI read Hillis' book on the Connection Machine, back when he first published it. I was studying AI at university at the time, and had just discovered the back-propagation method for training neural nets. Thought CM might be good at that. But any burly dot-product accelerator would be way more appropriate; that's why GPUs are a good fit for training and inference. Connection Machine might be ideal for a Gelertner tuple-space memory. Later, I worked at a biotech company that actually had a real Connection Machine; they used it as a huge sliding-window pattern matcher, to search patent filings for prior art. !! Searching for gene sequences in published literature. Holy moly... These days, a CPU would be fast enough; memory sizes are much greater now.
- mmusson 3y agoI was pleased that he called his write up on the industrial design for the computer, a case study.
- rst 3y agoAs a practical matter, you also have to include the floating point chips -- each attached to a 32-bit slice of that data path with a custom glue chip (the "SPRINT chip", which also allowed a form of indirect addressing); this hardware may have been nominally optional, but I don't think many machines were sold without it. There was also lower-level programming than Paris -- CMIS was given to customers and was a compiler target; there was also lower-level microcode.
- helf 3y ago[dead]
- mk_stjames 3y agoI'm curious, what was the typical high level language being used for programming the CM2? I've seen Fortan 90 referenced in mention of programming for the machine, but is there a surviving Fortran compiler available for the CM2 architecture that you have come across?
- deleted 3y ago[deleted]
- nicwolff 3y agoIn general it was C*, but there was CM Fortran as well, which C* could call and which could call C* subroutines. https://en.wikipedia.org/wiki/C%2A https://en.wikipedia.org/wiki/C%2A http://people.csail.mit.edu/bradley/cm5docs/CM-5CStarUsersGuide.pdf http://people.csail.mit.edu/bradley/cm5docs/CM-5CStarUsersGu... http://bitsavers.informatik.uni-stuttgart.de/pdf/thinkingMachines/CM5/CMFortranProgrammingGuide.pdf http://bitsavers.informatik.uni-stuttgart.de/pdf/thinkingMac...
- ralphc 3y agoDid it use Star Lisp as well?
- ralphc 3y agoWhat language are you using? I think about doing the same thing every now and then, no reading about it just daydreaming. I would think a BEAM language like Elixir might do the trick, a BEAM process for each processor, passing messages around.