[HN Gopher] Linux/4004: booting Linux on Intel 4004 for fun, art...
___________________________________________________________________
Linux/4004: booting Linux on Intel 4004 for fun, art, and no profit
Author : dmitrygr
Score : 526 points
Date : 2024-09-20 11:04 UTC (1 days ago)
(HTM) web link (dmitry.gr)
(TXT) w3m dump (dmitry.gr)
| blueflow wrote:
| At first i was like "I'm pretty sure this is bullshit or some
| cheat used" but then i was like "Oh, its dimitry."
|
| Impressive work, as always.
| ssrc wrote:
| I mean, it's fun and interesting bullshit that cheats a lot.
| I'm sure that you could emulate a MIPS using a one-bit
| processor like the MC14500[0] with enough supporting hardware,
| real or virtual. Looking forward to it, Dimitry.
|
| [0] https://en.wikipedia.org/wiki/Motorola_MC14500B
| alnwlsn wrote:
| We need this for the Usagi Electric vacuum tube computer.
| dmitrygr wrote:
| I'll work on setting a new lower record every ten years or
| so. My guess at the next three steps: one bit controller,
| transistors only, vacuum tubes.
| mrguyorama wrote:
| At some point you will just need to offload the actual
| "processing" part to some nice old chap named Dave who has
| himself an abacus, and every now and then you send him a
| letter and he moves some stones and sends a letter back
| with the result.
| dmitrygr wrote:
| CPU-by-correspondence!
| MobiusHorizons wrote:
| I think you have invented the most cursed form of
| virtualized cloud computing where the memory is connected
| by a very slow network.
|
| Bit of course you can solve this by sending letters
| speculatively, and having Dave keep copies of his letters
| back to you so he reference them for recently set values,
| that way you can at least keep Dave busy while the
| letters are in flight.
| Frenchgeek wrote:
| Obligatory https://xkcd.com/505 , I think.
| adrian_b wrote:
| Very impressive work, but most of the work has been necessary
| because Intel 4004 was not really the first microprocessor,
| this was just BS propaganda used by Intel to push back by one
| year the date of the launch of the first microprocessor, to
| 1971.
|
| The first true (civilian) microprocessor was Intel 8008, in
| 1972.
|
| Intel 8008 was a monolithic implementation, i.e. in a single
| PMOS integrated circuit, of the processor of Datapoint 2200,
| therefore it deserves the name "microprocessor".
|
| The processor of Datapoint 2200 had an ugly architecture, but
| there is no doubt that it was a general-purpose CPU and traces
| of its ISA remain present in the latest Intel and AMD CPUs.
|
| On the other hand, the set of chips that included Intel 4004
| was not intended for the implementation of a general-purpose
| computer, but it was intended just for the implementation of a
| classic desktop calculator, not even a programmable desktop
| calculator.
|
| This is the reason for the many quirks of Intel 4004, e.g. the
| lack of instructions for the logic operations, and many others
| that have increased the amount of work required for
| implementing a MIPS emulator suitable for running Linux.
|
| Even if Intel 4004 was intended for a restricted application,
| after Intel has offered to sell it to anyone, there have been
| many who have succeeded to use it in various creative ways for
| implementing microcontrollers for the automation of diverse
| industrial processes, saving some money or some space over a
| TTL implementation.
|
| In the early days of the electronics industry it was very
| normal to find ways to use integrated circuits for purposes
| very different from those for which the circuits had been
| designed. Such applications do not make Intel 4004 a true
| microcontroller or microprocessor. Very soon many other
| companies, and later also Intel, have begun to produce true
| microcontrollers, designed for this purpose, either 4-bit or
| 8-bit MCUs, then Intel 4004 has no longer been used for new
| designs.
| MarkusWandel wrote:
| No kidding about unusual uses of ICs. Not related to
| microprocessors, but I have an old analog triple conversion
| HF receiver (Eddystone EC958/3 for what it's worth) that uses
| a TTL IC in an analog circuit! I'd have to look at the
| schematic again, I think it's a multi-stage counter, but
| basically what it uses it for is to generate a comb shaped
| spectrum, one "spike" of which can then be picked up by an
| analog circuit and locked to, to generate precisely spaced
| tuning steps for the high stability tuning.
| dboreham wrote:
| Glad to see someone besides me posting this whenever 4004
| history-rewriting comes up.
| klelatti wrote:
| Your argument is that because the 4004 was built to power a
| calculator that disqualifies it as a microprocessor?
| Independent of the actual nature of the 4004 itself and its
| potential applications beyond its first intended use? Can't
| see how that makes sense at all.
|
| Your statement about Intel 'pushing back' the date to 1971
| also makes little sense given Intel advertised [1] the 4004
| as a CPU in Electronic News in Nov 1971.
|
| [1] https://en.wikipedia.org/wiki/Intel_4004#/media/File:Inte
| l_4...
| adrian_b wrote:
| Because of its purpose, Intel 4004 did not have many
| features that had been recognized as necessary already
| since the first automatic computers, for example the lack
| of logic operations, which was mentioned in the parent
| article.
|
| Therefore I do not believe that it is possible to consider
| Intel 4004 as a general-purpose processor. It had only the
| features strictly necessary for the implementation of the
| Busicom calculator.
|
| The idea to sell 4004 for other uses has appeared long
| after the design was finished, when Busicom did not want to
| pay for the chipset as much as Intel desired, so Intel
| decided to try to sell the chipset to other customers too,
| and then they thought to advertise it as a "CPU".
|
| Moreover, it is debatable whether Intel 4004 can be
| considered as a monolithic processor, because 4004 was not
| really usable without the rest of the chipset, which
| provided some of the functions that are normally considered
| to belong into a processor.
|
| The Intel 4004 4-bit "CPU" implemented less functions than
| the 4-bit TTL ALU 74181, which was general-purpose and
| which was the main alternative at that time for
| implementing a CPU, but it had the advantage of including
| many registers, because the MOS registers were much cheaper
| in die area than the TTL registers, and these included
| registers were the reason why a CPU implemented with the
| Intel 4004 chipset had a lower integrated circuit count
| than the equivalent implementation with MSI TTL ICs.
|
| Intel's advertisement of 4004 being a CPU was just an
| advertisement of the same kind of Tesla having a "Full
| Self-Driving".
| klelatti wrote:
| > Because of its purpose, Intel 4004 did not have many
| features that had been recognized as necessary already
| since the first automatic computers, for example the lack
| of logic operations, which was mentioned in the parent
| article.
|
| So you're setting a range of instructions without which a
| device can't be considered a general-purpose computer
| even if the missing instructions can be recreated in
| software with instructions that do exist.
|
| Sorry disagree with this completely, as does every
| definition I've ever seen.
| kens wrote:
| No, logic operations aren't "recognized as necessary".
| For instance, the IBM 1401--the most popular computer of
| the early 1960s--did not have logic operations. (This was
| very annoying when I implemented Bitcoin mining on it.)
|
| The reason that the 4004 is considered a CPU and the
| 74181 is not a CPU is that the 4004 contains the control
| logic, while the 74181 is only the ALU.
|
| Of course, "microprocessor" and "CPU" are social
| constructs, not objective definitions. (For instance,
| bit-slice processors like the Am2901 were considered
| microprocessors in Russia.) So you can craft your own
| definition if you want to declare a particular processor
| first. _cough_ MP944 _cough_
| dmitrygr wrote:
| The naming and propaganda wouldn't matter. I just wanted
| something lower-end for sure than a 6510 and an AVR. 4004 is
| that
| cdchn wrote:
| Is this the oldest piece of hardware that's ever run Linux,
| I'm left wondering?
| dmitrygr wrote:
| It surely is
| cdchn wrote:
| I'd figure the earliest thing anybody has run Linux on
| before this would be a 386. Although I suppose with this
| MIPS emulator ported to some other proto-processors it
| could go older, but just getting the hardware to do that
| would be a challenge.
|
| PS: love the VFD
| fortran77 wrote:
| There was a 286 Xenix, and Minix (which inspired Linux)
| ran on an 8088.
| cdchn wrote:
| Yeah, and UNIX was developed on a PDP-7 as far back as
| 1969. But I was talking about Linux.
| einr wrote:
| Linux will run on a 68020 which is a couple of years
| older than a 386.
| kens wrote:
| I'm glad to see the Datapoint 2200 is getting attention, but
| by reasonable definitions of "microprocessor", the Intel 4004
| was first, the Texas Instruments TMX 1795 was second, and the
| Intel 8008 was third. It seems like you're ruling out the
| 4004 on the basis of "intent" since it was designed for a
| calculator. But my view is that the 4004 is a programmable,
| general-purpose CPU-on-a-chip, so it's a microprocessor. Much
| as I'd like to rule out the 4004 as the first microprocessor,
| I don't see any justifiable grounds to do this.
|
| Intel's real innovation--the thing that made the
| microprocessor important--was creating the microprocessor as
| a product category. Selling a low-cost general-purpose
| processor chip to anyone who wanted it is what created the
| modern computer industry. By this perspective, too, the 4004
| was the first microprocessor, creating the category.
|
| My article in IEEE Spectrum on this subject goes into much
| more detail: https://spectrum.ieee.org/the-surprising-story-
| of-the-first-...
| apricot wrote:
| IMO, just because a microprocessor has a quirky instruction
| set that doesn't include some standard instructions, or was
| made for a specific purpose in mind, doesn't make it not a
| microprocessor.
| artyom wrote:
| I didn't know the guy but he clearly knows what he's doing,
| it's unbelievably entertaining to read the details of achieving
| an impossible task with the most underpowered tool possible.
| eulgro wrote:
| The video took 9 days to film. 4 hours per emulated second.
|
| Also I wonder why he's using Windows 95?
| danirod wrote:
| Sorry for the nitpick, but the laptop in the video looks like
| Windows 2000
| phatskat wrote:
| The best Windows imo
| pkphilip wrote:
| True
| dmitrygr wrote:
| Windows 2000
|
| For the video, i wanted a laptop with a real serial port (no
| usb). This one fit the bill and was $20 on eBay. Windows 2000
| is the prettiest windows IMHO, so that's what I installed for
| the demo video.
| PaulHoule wrote:
| Virtual machine (as in the Z-machine or the JVM) worked on early
| micros when you couldn't use them as compiler targets. See
|
| https://en.wikipedia.org/wiki/SWEET16
|
| https://en.wikipedia.org/wiki/UCSD_Pascal
| eqvinox wrote:
| oof. amazing.
|
| ...you can see in the high PC bits what's currently executing!
|
| P.S.: Still loads the kernel faster than a virtual ISO on a
| server's shitty IPMI over the internet ;D
| dmitrygr wrote:
| While it boots, you can look at LEDs and map them to kernel
| function easily by running "nm" on vmlinux.
|
| Also, when in user space, you can tell between the main binary
| (way below 0x01000000) and shared libraries (loaded high near
| 0x77000000)
| abound wrote:
| > Still loads the kernel faster than a virtual ISO on a
| server's shitty IPMI over the internet
|
| This gave me flashbacks of trying to boot Dell M1000e blade
| servers from an NFS-hosted ISO running on a Raspberry Pi, which
| was painfully slow to boot and run.
| jart wrote:
| There needs to be something like a Nobel Prize for this kind of
| thing.
| seqizz wrote:
| Probably closest would be the Ig:
| https://en.wikipedia.org/wiki/Ig_Nobel_Prize
| jart wrote:
| That's kind of insulting honestly. Getting Linux to run on an
| i4004 is bona fide engineering. More real than engineering
| that we're paid to do most times. Looking at the list of Ig
| Nobel Prize winners it sounds like The Onion but not funny.
| fortyseven wrote:
| Supposed to be, apparently.
| sitkack wrote:
| To the winners of an Ig Nobel, it is often their most
| cherished award.
| qwerty456127 wrote:
| Running a modern kernel on a 4004 just doesn't sound too
| far from running it on an incandescent light bulb or on a
| potato. No doubt sorcerer level engineering.
| zamadatix wrote:
| Many things which receive an Ig Nobel (but not all) are
| bona fide <thing> that just happen to be funny or have a
| particularly strong aspect (not necessarily in their
| entirety) of triviality. I'd be honored if I did a project
| like this that got enough attention and generated enough
| amusement to deserve an Ig Nobel instead of offended I'm on
| the same list as projects that weren't all genuinely
| representative works of the field.
| 6SixTy wrote:
| There's the Turing award, which is an equivalent prize for
| computing. Could add an acknowledgement for strange and unusual
| applications of computer science.
| irdc wrote:
| Ig Nobel is a pun on Nobel and ignoble, so how about a Tor
| Turing award?
| jesprenj wrote:
| > But for the one I'll have hanging in my office, I have loftier
| goals. With swap enabled, the kernel sources can actually be
| built right on-device. It will take some number of years. The
| partition where the kernel lives is /dev/pvd2 and is mounted
| under /boot. The device can build its own kernel from source,
| copy it to /boot/vmlinux, and reboot into it. If power is
| interrupted, thanks to ext4, it will reboot, recover the
| filesystem damage from the journal, and restart the compilation
| process. That is my plan, at least.
| Pet_Ant wrote:
| I wonder of you can calculate when it will finish by counting
| the instructions and then pin the date it will finish and
| stream the completion.
| dmitrygr wrote:
| Yes. I have an emulator of this board (it is in the downloads
| too) which is much faster than the real thing. It shows how
| much realtime is needed to get to the current state. Doing a
| build in it will answer the question unequivocally.
| ladyanita22 wrote:
| Update us please!!
| whartung wrote:
| I have two visions of this.
|
| One, it reminds me of that "worlds longest song" or somesuch
| thing, where they play a note every 10 years.
|
| The other is just a picture of someone, asleep at their desk, a
| pile of calendars with days checked off tossed to the side,
| random unwashed mugs and such all dimly lit by a desk lamp and
| see the `$ make linux` finally return to an new, unassuming `$`
| prompt. Like Neo in the Matrix.
| dmitrygr wrote:
| I like the second version!
| rx_tx wrote:
| the "World's longest song" is from John Cage, called As Slow
| As Possible and is played continuously on an organ in a
| church in Germany.
|
| It will be completed in the year 2640.
|
| https://en.wikipedia.org/wiki/As_Slow_as_Possible
| teaearlgraycold wrote:
| I'd assume you'd have at least a few bit flips occur in the
| process.
| dmitrygr wrote:
| Very large-process DRAM with frequent refreshing, in ceramic
| cases. It might last long enough without flips
| 01HNNWZ0MV43FF wrote:
| Ars Longa, Vita Brevis
| alnwlsn wrote:
| Wow this was not a cheap project! Thanks Ebay collectors.
|
| Also probably the only time I'd have gone for an LCD over a VFD.
| If you're running a multi-year long compile, it'll probably be
| burned in to hell by the end.
| larodi wrote:
| Is a project worth receiving a honorary PHD if you ask me.
| Sadly university staff does not read HN too much.
| wolf550e wrote:
| It's not original research. A Master's Thesis at most, or
| only a Bachelor's Degree Final Project. Regardless, doing
| such amazing work for a blog (and geek fame) is amazing.
| capitantrueno wrote:
| Since when does an honorary PhD requires original research?
| wolf550e wrote:
| Sorry, bad reading comprehension on my part! I see
| honorary PhDs often used to express political support,
| instead of honest admiration of achievements.
| hilbert42 wrote:
| Mission impossible -- do it with Windows!
| dmitrygr wrote:
| Windows ran on a similar MIPS machine (Microsoft jazz). The
| issue is emulating scsi. I think I'd need a lot more rom space
| to do that. Scam is messy and hard.
|
| The alternative is to find the Windows MIPS DDK and build a
| paravirtualized disk driver for it like I did for Linux. That
| would make it more doable.
| hilbert42 wrote:
| Ha. Jazz a dim distant memory but methinks it's concept is
| ~20 later than the 4004. Just thought about emulating/writing
| SCSI on the 4004, might be easier to climb Everest.
|
| Perhaps we need a competition, assembly programmers only need
| apply. :-)
| Pet_Ant wrote:
| In the "Why MIPS?" section:
|
| > some have shitty addressing modes necessitating that they would
| be slow (RISCV)
|
| What is wrong with the RISC-V addressing modes?
| Rohansi wrote:
| Probably nothing unless you want to emulate it on severely
| underpowered hardware.
| TapamN wrote:
| It's not really the addressing modes, but the instruction
| format. Immediate values on RISC-V are not stored contiguously
| on certain RISC-V instructions.
|
| On all MIPS instructions, the bits for a immediate add, load
| constant, branch, etc value are always stored in order.
|
| On RISC-V, the bits are (sometimes) jumbled around. For
| example, on a unconditional branch, the bits for the
| destination offset are stored in the order of bit 19, bits 9-0,
| bit 10, bits 18-11. In hardware, reordering that is free, you
| just run your wires the right way to decode it. In software,
| you have to do a ton of bit manipulation to fix it up.
|
| The reason RISC-V does that is to simplify the hardware design.
| Pet_Ant wrote:
| Okay, so it's more about IMM representation within the
| bytecode rather than some memory addressing mode.
| dmitrygr wrote:
| Well, lack of REG+REG and REG+SHIFTED_REG addressing modes
| handicaps it significantly. And no, it will not get
| magically fused by magic fusing fairies in your cpu
| snvzz wrote:
| >lack of REG+REG and REG+SHIFTED_REG addressing modes
| handicaps it significantly
|
| Is this a guess, or statistically supported on a body of
| empirical evidence like the RISC-V spec is?
| dmitrygr wrote:
| Compile same code for aarch64 and riscv64. Compare.
|
| It is well known design deficiency. Much like lack of bit
| field ops.
| snvzz wrote:
| Sounds extremely subjective.
|
| i.e. it does not have my favored instructions or
| addressing modes, so it must be worse.
| smolder wrote:
| Much like juggling with your feet instead of hands is
| subjectively worse.
| snvzz wrote:
| From a hardware perspective, juggling is better without
| flags and without unnecessary addressing modes.
|
| Neither are concepts RISC-V invented, but rather,
| adopted. Ideas that have been plenty tested out there,
| and proven beneficial.
|
| Large body of evidence trumps intuition and guesswork.
| Most of this is documented in the spec itself and/or in:
|
| Computer Architecture: A Quantitative Approach (John L.
| Hennessy, David A. Patterson)
| smolder wrote:
| I just meant that it's somewhat unergonomic when dealing
| with the instruction set directly, FWIW. Thanks for the
| reference.
| jodrellblank wrote:
| You're replying to the author of the post explaining why
| he would have to do more in software to emulate RISC-V
| than MIPS and that would be more effort and run slower,
| and you're telling him "that's extremely subjective"?
|
| How is that subjective?
| camel-cdr wrote:
| Do you have code examples for this? I'm looking for cases
| where RISC-V is lacking compared to arm.
| kouteiheika wrote:
| > Well, lack of REG+REG and REG+SHIFTED_REG addressing
| modes handicaps it significantly.
|
| Does it? Well, there's a vendor specific extension for
| that (XTheadMemIdx):
|
| https://github.com/XUANTIE-RV/thead-extension-
| spec/releases/...
|
| Not sure about GCC, but on clang it is trivial to enable
| it. And if you really want to (assuming you have the
| hardware) you could compile exactly the same code with
| and without it and compare how much exactly it is
| handicapped if those instructions are not there.
|
| Plus, on RISC-V multiplication/division (about which
| you've complained) is optional, and there is also a
| variant of RISC-V with only 16 registers instead of 32
| (also very simple to enable on recent versions of clang,
| although Linux would probably need some modifications to
| be able to run on that).
|
| So I'm not entirely convinced that RISC-V would be worse
| here.
| dmitrygr wrote:
| Lack of mul/div isn't actually good. Having it be done
| ins guest code is a magnitude slower than is host code.
|
| My other issue was that there is NO working Linux user
| space for rv32. There is for rv64. No Debian. No Ubuntu.
| No anything for rv32
| molticrystal wrote:
| I love giving the AVR example when people ask if something can
| run on an underpowered machine, now I have a new example to link.
|
| Considering the frequencies and wattage I wonder how RF it spits
| out and what is detectable and decodable on the waterfall of a
| SDR.
|
| By the way still reading through it, but at the time of this
| comment I see the word "soubroutine" which is probably a
| misspelling.
| dmitrygr wrote:
| Fixed the typo. Thanks
| garganzol wrote:
| The proof of the Turing Completeness Theorem in action.
| Beautiful. Boot time is ~5 days.
| johnklos wrote:
| Wow. And I thought modern NetBSD on a 15 MHz m68030 with a 16 bit
| memory bus and 10 megabytes of RAM is slow. This is crazy!
|
| It illustrates a point I've explained to many people over the
| years: once computers started coming with persistent storage,
| open address spaces and MMUs towards the late '80s and early
| '90s, we basically arrived at modern computing. An Amiga 3000 or
| i80486 computer can run the same things as a modern computer.
| Sure, we have ways to run things orders of magnitude faster, and
| sure, we now have things that didn't exist then (like GPUs that
| can run code), but there's no functional difference between those
| machines and new ones.
|
| I love that Dmitry shows how loosely "functional" can be defined
| :)
| dmitrygr wrote:
| I don't know if this was a thing in America, but in USSR in the
| 70s and 80s it was very popular to play chess-by-
| correspondence. You would literally snail-mail letters back-
| and-forth with your move. Games would last months or years. It
| added an extra challenge to chess because by the time you got a
| response, you might have forgotten what strategy you had had.
|
| This project is basically Linux-by-correspondence. The
| challenge is here too. By the time the command produces an
| output, you might have forgotten why you ran it.
| johnklos wrote:
| I installed Windows 95 on an Amiga 3000 with a 25 MHz m68030
| via floppy to see if DMF formatted disks would work and to
| play around. By the time it finished, I had forgotten what I
| wanted to try out.
| noufalibrahim wrote:
| There was something called Agora
| (https://en.wikipedia.org/wiki/Agora_(web_browser)) which was
| sort of an email/http proxy. You could browse the web via.
| email and set "GET", "POST" etc. commands. It was my first
| exposure to the web.
|
| It sounds very similar to what you mentioned.
| asdefghyk wrote:
| There was also a system where a person could email a
| request for a webpage to a certain email address and the
| web page would be returned by email. Existed in late 1980s?
| I think or maybe early 1990s?
| noufalibrahim wrote:
| That's what Agora did. I used it for a while using pine.
| I still remember the address by heart. It was
| agora@dna.affrc.go.jp.
|
| I guess you never forget your first time : - )
| password4321 wrote:
| https://news.ycombinator.com/item?id=30387879#30390269
|
| > _Richard Stallman browses the web via email._
|
| https://stallman.org/stallman-computing.html
| unit149 wrote:
| M-xing https sites on Emacs, altering the format of text
| queried, is a means of inferential consumption of news.
| Parallel strains of information and thought, inhabiting
| the same site may be recollected if the medium is
| altered.
| unit149 wrote:
| Reorganizing the combined correspondence on an excel
| spreadsheet through an arbitrary numbering system years
| later, and experiencing the Spinozan "pang of bad
| conscience."
|
| Did you write the PIC12F1840 HEX file in 4004 machine code
| for your PIC-based one-chip sound player?
| jylam wrote:
| That's basically the concept of Turing Completeness. Any Turing
| complete system can run anything. It may be _very_ slow, but it
| will run. ChatGPT could run on a 4004, all you need is time.
| qwerty456127 wrote:
| https://cs.stackexchange.com/a/60978
| byteknight wrote:
| And a gargantuan amount of RAM.
| pclmulqdq wrote:
| A computer is technically not a Turing machine due to the
| lack of infinite RAM. It is a finite state machine with an
| absurdly large state space.
| brudgers wrote:
| Because it has infinite RAM, technically the Turing machine
| is not a machine.
| tcbawo wrote:
| Can't any computer with external connectivity (ie serial or
| network connectivity) be considered to have infinite
| memory?
| lytedev wrote:
| How would that work?
| nineteen999 wrote:
| "we're the dot in dot.com"
|
| No wait ... the other one ...
|
| "the network is the computer"
| DonHopkins wrote:
| It was funny when Sun proudly and unilaterally proclaimed
| that Sun put the "dot" into "dot com", leaving it wide
| open for Microsoft to slyly counter that oh yeah, well
| Microsoft put the "COM" into "dot com" -- i.e. ActiveX,
| IE, MSJVM, IIS, OLE, Visual Basic, Excel, Word, etc!
|
| And then IBM mocked "When they put the dot into dot-com,
| they forgot how they were going to connect the dots,"
| after sassily rolling out Eclipse just to cast a dark
| shadow on Java. Badoom psssh!
|
| https://www.itbusiness.ca/news/ibm-brings-on-demand-
| computin...
|
| "The Network Is The Network and The Computer Is The
| Computer. We regret the confusion."
|
| https://news.ycombinator.com/item?id=34256623
|
| >Oh yeah, don't get me started about NFS! (Oops, too
| late.) I'll just link with short summaries: [...]
|
| >NFS originally stood for "No File Security". [...]
|
| >The network is the computer is insecure, indeed.
| johnklos wrote:
| I've always interpreted the definition of storage as
| arbitrarily large, not specifically infinite. The universe,
| after all, is finite. The "well, acshually" arguments
| aren't interesting, because they're 100% abstract.
| pclmulqdq wrote:
| When you're talking about something like neural networks
| on a 4004, the "well ackshually" argument does become
| very much relevant. The limitations of that kind of
| platform are hard enough that they do not approximate a
| Turing machine with respect to modern software.
| johnklos wrote:
| Running Linux on a 4004 is possible, as we've seen, but
| running llama is just way too far? Interesting take.
| pclmulqdq wrote:
| Llama takes a lot more MIPS and a lot more RAM than
| linux. Linux is more complicated, but computers were
| running linux 30 years ago. In this case, quantity has a
| quality all of its own.
| jfengel wrote:
| It is defined as arbitrarily large but not infinite.
| That's not because of physical concerns, but because some
| of the theorems don't work if the memory is actually
| infinite.
| darby_nine wrote:
| You're comparing an a priori concept with a posteriori
| one. It's like claiming the number five doesn't
| "acshually" exist. Like yea, it's a concept, concepts
| don't exist.
|
| A universe isn't a turing machine because it can't run
| all the programs that can run on a turing machine. This
| isn't exactly controversial.
| brudgers wrote:
| _That 's basically the concept of Turing_
|
| Tarpit,
|
| where everything is possible but nothing of interest is easy.
|
| https://en.m.wikipedia.org/wiki/Turing_tarpit
| jojobas wrote:
| >all you need it time
|
| Like geological time.
| johnklos wrote:
| Dmitry talks about compiling the kernel in years. While I
| haven't done that, I have built NetBSD-vax and NetBSD-
| mac68k natively on a VAXstation 4000/60 and on a Mac Quadra
| 610. It's on the scale of multiple months instead of years,
| but it's enough to give me a feel for it.
| retrac wrote:
| 15 MHz m68030 with a 16 bit memory bus and 10 megabytes of RAM
| -- A Mac LC II, by any chance? :)
|
| > towards the late '80s and early '90s
|
| By the late 1960s, really. It would probably be possible to
| port Linux to the IBM Model 67 [1]; might even be easy since
| GCC can already target the instruction set. The MMU is
| sufficient. Maybe a tight squeeze with the max of 2 MB of fast
| core. Would be in a similar ballpark, a bit slower, to that
| 68030 machine.
|
| Full virtualization, and hardware enforced memory and IO
| boundaries, were invented early on, too. It took a while for
| such features to trickle down to mini- and then micro-
| computers. And then much longer for popular software to take
| advantage.
|
| [1] https://en.wikipedia.org/wiki/IBM_System/360_Model_67
| vincent-manis wrote:
| I have fond memories of the System/360 M67 (and its
| successors, starting with a System/370 M168) I used from 1970
| to the early 1980s. It ran the Michigan Terminal System, and
| we had all the modern conveniences (terminal operation in the
| IBM world was klunky, but PDP-10s at the same time did that
| right). And of course Unix dates from exactly that period.
|
| The fact that Linux runs well on a modern zSeries
| demonstrates that, even with all the historical baggage this
| 60+-year-old architecture has, it carries with it many of the
| architectural innovations that current OSes and languages
| need.
| jdougan wrote:
| Oh man, I has so much fun on MTS once that ridiculous fake
| PC-ish command line was removed. Wrote all kinds of wacky
| stuff using the command line macros.
| johnklos wrote:
| Wonderful look in to our history, and you're undoubtedly
| correct about being able to target that system.
|
| My example was about hardware that was affordable to mere
| mortals (although it's getting to be more expensive to buy
| that same hardware now as it was to buy it when it was new),
| but the idea is the same :)
| johnklos wrote:
| Yes, a Macintosh LC II :)
| YZF wrote:
| Those were very nice machines for the day...
| justmarc wrote:
| A wonderful little machine. So, so much better than the
| PCs of its time.
| StefanBatory wrote:
| This is absolutely insane - hats off to you. To say it's
| impressive it's like to say nothing.
| Max-q wrote:
| This was a very interesting read. I have read a bit about the
| 4004 before so I knew it was strange. But the level of obscurity
| is mind-blowing. Now I just got the urge to see how well I would
| be able to make a CPU with the same transistor count. It's not
| that much fewer than a 6502. 8 bit would make it so much easier
| to program.
|
| Thanks for documenting your work so well!
| dmitrygr wrote:
| Make it out of transistors and i'll port my MIPS emulator to it
| :)
| immmmmm wrote:
| Have you considered porting to the vacuum tube 1 bit / 1 Hz
| MC14500 clone?
|
| https://hackaday.com/2021/12/27/single-bit-computer-from-
| vac...
| dmitrygr wrote:
| a thought!
| analog31 wrote:
| All it needs is to run a 4004 emulator. :-)
| hnpolicestate wrote:
| See below for boot time after optimization.
| dmitrygr wrote:
| That is before many optimizations. Current boot time (on a real
| 4004 at 790KHz) is ~4.5 days. At 740 it would thus be 4.8 days
| hnpolicestate wrote:
| Yes my fault. Editing original post.
| anyfoo wrote:
| Only started reading, but: Just to keep you on
| your toes, there does exist a single one-byte instruction that
| takes 16 cycles - FIN. However, that is only the beginning.
|
| Please tell me that was intentional.
| dmitrygr wrote:
| it was
| qwerty456127 wrote:
| Didn't anybody try to build a 4004 core running at some hundreds
| MHz?
| dmitrygr wrote:
| not that I found. And it makes sense since without MHz-fast
| 4002 and 4289, it is useless. Plus, swinging a bus from -15V to
| 0V at MHz speeds will take quite some drive current.
| np1810 wrote:
| This is so awesome. I hope I can expand my knowledge such that I
| can understand most of this project, right now it was way past my
| limited CS proficiency.
|
| Though my highlight (which I could completely comprehend) is
| "Section 14.b & 14.c - Getting the data..." All it took was 400K
| files (~275 photos/day after 4 years). We have so much of raw
| power of processing, storage & network still the most-used
| (probably) media-sync apps crashed or faced slow sync, AirDrop
| fails & lack of 'Select-All' UI feature. Crazy times we live/will
| live in... :)
| solstice wrote:
| I wonder if Dmitry considered a syncing tool like MobiusSync or
| Syncthing to copy the pictures to a PC continuously after they
| are taken.
| anshargal wrote:
| I wonder if there is a simple chip, similar to the 4004, 8080, or
| Z80, that can run at modern high frequencies -- 4-5 GHz, or even
| higher due to its simplicity? Not much of a practical use, but it
| could be fun for emulation projects. 100x slower with emulation -
| still fast enough for retro platforms.
| dmitrygr wrote:
| RP2350 can hit 400mhz on two cores without much effort. 800MIPS
| of total power, if you can parallelize your emulator
| tails4e wrote:
| An FPGA could 400mhz with a bit of effort, 100mhz easy.
| xandrius wrote:
| Wonderful read but that ending bit about taking the video truly
| hurt...
|
| It kind of shows that no one can be an expert in everything at
| the same time.
| roygbiv2 wrote:
| What did he do wrong? Seems he knew what he needed to do but
| the technology wouldn't work.
| dmitrygr wrote:
| I think the implication is that there is probably a much more
| reasonable way to do what I was trying to accomplish, and I
| didn't do that. That is almost certainly true. This was my
| first time trying to film such an extreme time lapse so it is
| quite possible that I wasn't aware of some tools designed for
| it
| mkl wrote:
| BogoMIPS : 0.00
|
| Very impressive project. Recording it with a phone seems
| complicated though. Why not a Raspberry Pi with camera module? Or
| a decent webcam and any computer?
| unwiredben wrote:
| At Hackaday Supercon in 2002, the badge for attendees
| (https://hackaday.com/2022/10/12/the-2022-supercon-badge-is-a...)
| implemented a fictional 4-bit CPU along with control panel for
| directly entering instructions and running and stepping through
| code. I had a huge amount of fun implementing a space shooter
| video game on it, as the panel included a bit-by-bit view of one
| of its pages of memory. Comparing its Voya4 architecture with the
| 4004 was fascinating. Some similar tradeoffs, but the Voya4 has
| the benefit of 50 years of CPU instruction set exposure.
|
| Alas, dimitygr's method wouldn't work on the badge, as the memory
| and RAM are all internal to the PIC24 that implements the CPU
| emulator.
|
| BTW, 4-bit CPUs are still made and used. Many of the mass-
| produced IR remotes are programmed using a 4-bit MCU. See
| https://www.emmicroelectronic.com/sites/default/files/produc...
| for a datasheet.
| nickpsecurity wrote:
| Jack Ganssle's The Embedded Muse covers tools and techniques in
| embedded development. In one article, he reported that 4-bit
| MCU's were still competitive in some sectors:
|
| https://www.ganssle.com/rants/is4bitsdead.htm
|
| I suspected we'd see either 4- or 8-bit return for neural
| networks. IBM did try the kilocore processor which was a
| massively-parallel, 8-bit system. Multicore 4- and 8-bitters are
| also the kind thing people could build on cheaper nodes, like
| Skywater's 130nm.
___________________________________________________________________
(page generated 2024-09-21 23:01 UTC)