12 ms·
Design and Implementation of a 256-Core BrainFuck Computer [pdf]
- qume 10y ago". A large amount of research is focusing on what kind of wimpy machines are best fit for important workloads. In this paper, we present a rather extreme example of a wimpy processor, using the BrainFuck [22] esoteric programming language as its ISA." Seems legitimate to me. Seriously, why not explore the extremes? Thats where we often learn the most. I suspect many here think this is a joke, but although does have it's funny side this definitely warrants the research IMHO
- rys 10y ago"The BrainFuck computer is an attractive solution for servicing high throughput BrainFuck cloud services, both in terms of performance and cost." Love it.
- Cyph0n 10y agoDon't laugh: this is the next big step in cloud computing infrastructure. Imagine Linux compiled to the BrainFuck ISA running a Docker container running a BrainFuck web application. Of course, we will clearly need a solid BrainFuck-to-JS transpiler to make things web scale. Could it get better than that?
- Retr0spectrum 10y agoHere's a very performant BF-to-JS transpiler: http://copy.sh/brainfuck/ http://copy.sh/brainfuck/ We're ready for the revolution!
- Cyph0n 10y agoThank you! That looks quite impressive actually. To all you naysayers: we'll see who gets the last laugh 10 years from now..
- jevinskie 10y agoAh nice. I know of Fabien (copy) from his v86 work which is a very complete x86/PC peripheral emulator written in JS. https://github.com/copy/v86 https://github.com/copy/v86
- adrianratnapala 10y agoI thank you for the first good (if not correct) usage of the word "performant" in the history of the universe.
- sjnair96 10y agoI don't understand what's amusing. Care to explain?
- Cyph0n 10y agoHave you heard of anyone running BrainFuck in production?
- nickpsecurity 10y agoThe joke is gonna be on all of you when I deploy a 256-core machine in production. :P Then you'll modify it to be, "Have you heard of anyone running BrainFuck in production other than Nick P's BrainFuck-as-a-Service platform of questionable longevity?
- qwertyuiop924 10y ago...Well, we can compile TIS-100 programs to BF, and then run it on your 256-core machine. Then the question will become, "Have you heard of anyone running BrainFuck in production, other than Nick P's BrainFuck-as-a-Service platform of questionable longevity, or Qwerty's TIS-100-as-a-service running atop the former?"
- nickpsecurity 10y agoInteresting expansion that requires you to buy the new model that's 128-cores that each have an I/O MMU for added security of running the "corrupted" code without permanent damage. Includes actual ROM on-chip for trusted boot and accuracy of simulation. To keep customers happy, replacements for anyone with a support contract are sold at cost [with R&D included].
- qwertyuiop924 10y agoYes, we would require a new model, as new IO primitves would be required. Might I suggest ^v/.! as the instructions for writing up, down, left, right and last IO ports, respectively? For reading, we could use &V\,*$ for up, down, left, right, any and last respectively.
- subleq 10y agoThe instruction encoding seems inefficient -- they don't use the full 4 bits of information (the first bit is always zero except for `.`). Why not use a 3-bit encoding, since there are 8 instructions?
- Xorlev 10y agoThey have 9 states including a stop instruction, b`1111 which would preclude a 3-bit encoding. In any case, I suspect it's much easier to handle 4-bit words.
- rasur 10y agoLOL. I work in the same building as Urban. I'll be sure to point it out to him on Monday, I'm sure he'll be amused (or annoyed at my position in the queue of people that have already informed him of this). :D
- digi_owl 10y agoWhiskey Tango Foxtrot?
- NormlOverrated 10y agoAvailable on AWS in 2017.
- nickpsecurity 10y agoThe SystemD execution and update engine.
- qwertyuiop924 10y agoI mean, it would be more secure than the current one. But that's not saying much. Fun fact: systemd now has an entire command devoted to setting locale, something tyically done through simple text files. Lennart, just stop writing executables that do almost nothing. Despite what you may thing, we don't all have infinite disk space.
- witty_username 10y ago$ du -h --apparent-size /lib/systemd/systemd-localed 336K /lib/systemd/systemd-localed Not much, you could fit a thousand copies of this in 336 MB.
- nickpsecurity 10y agoIn comparison, the QNX demo disc had a whole graphical OS in 1.44MB that was more robust than that one file. Seems to be some efficiency or architectural issues in there. ;)
- qwertyuiop924 10y agoGiven, QNX never really caught on in the wider field of computing AFAIK. This may lend credence to the Godot team's theory that public visibility is based upon how big you are (https://godotengine.org/article/godot-aims-mainstream https://godotengine.org/article/godot-aims-mainstream).
- 10y ago
- toast0 10y agoJust fyi, if you put this on your resume, you might want to omit or abbreviate the name of the language.
- xvedejas 10y agoWhy? "Fuck" is not as bad a word as it used to be, especially depending on context.
- veddox 10y agoAnd your surrounding culture. In some places, you'd be out the door before the word had fully left your mouth. In others, nobody would blink...
- quickben 10y agoI wouldn't count on that. You generally want to stay away from any expletives in interviews, work and anything career oriented.
- deleted 10y ago[deleted]
- __s 10y agoAs someone who lists Befunge on their resume, either they get it or they don't (I followed up an interview with a link to a brainfuck interpreter I did in Haskell https://github.com/serprex/bfhs https://github.com/serprex/bfhs I got a 2nd interview, but no offer)
- deleted 10y ago[deleted]
- daveguy 10y agoPersonally I think the author is celebrating a recent successful tenure defense.
- deleted 10y ago[deleted]
- chris_va 10y agoI'm impressed that they were able to find 24 references to cite.
- posterboy 10y agodespite the juvenile name bf is quite mature for what it is
- Someone 10y agoWhy is the author consistently mixing up " "instructions per cycle" with "instructions per second"? Surely, phrases such as "We observed the following Instructions per Second (IPC)" and "assuming a perfect 1 instruction per second on the general purpose processor" should have activated some neurons in some brain, even assuming it got distorted by doing this research?
- sitkack 10y agoMaybe working on a 256 core BF computer has BF'd his brain? Have some empathy.
- nickpsecurity 10y agoThat's my guess. It's one of the few projects that I thought actually would damage my brain. I avoided it. Unlambda language is another one like that. Although I have considered trying to implement that one, esp in hardware.
- troels 10y agoDepending on the clock speed, it may be accurate enough?
- jsjohnst 10y agoThis greatly annoyed me too. It's IPC not IPS after all. I'm surprised this didn't get caught by literally anyone who reviewed this paper before hitting submit.
- nickpsecurity 10y agoThis is some bullshit. They didnt even port the standard benchmarks to Brainfuck to compare performance against reference implementations. I want to see ZIP, raytracing, web servers, map reduce... actual apps with associated BrainFuck performance. Scratch the whole Future Work section in favor of that given you might accidentally find evidence for using it in production somewhere. Moore and your GreenArray chips: be afraid! Something even more incomprehensible is coming after your market share!
- sitkack 10y agoColorBrainFuck would be in shades of gray.
- TazeTSchnitzel 10y agoI wonder if you're joking, but these sorts of things have been implemented in Brainfuck.
- nickpsecurity 10y agoI wasn't. I'm simply too sane to follow BrainFuck developments unless it's something wild and accidentally useful like a 256-core CPU on HN front page. ;) If they've been implemented, authors should've run some of them on the processor to include benchmarks in the paper. It's standard thing to do in CompSci papers on CPU's, compilers, optimizations, interpreters, anything. They usually include something like that.
- TazeTSchnitzel 10y agoRight, okay. It stood out to me too, because there are compilers and larger applications targeting Brainfuck, so it seems strange to only choose “hello world”-style programs.
- djhworld 10y agoThe title of the paper made me laugh a lot. Reading through it, you can tell the author had written it with a knowing smile
- qwertyuiop924 10y agoWell, this is a SigTBD paper (http://sigtbd.csail.mit.edu http://sigtbd.csail.mit.edu). I would expect nothing less.
- qwertyuiop924 10y agoAh. MIT, never change. Mind, this kind of stuff could come out of other institutions as well. They shouldn't change either. Anyways, can we have a version of TIS-100 where you write brainfuck with added message sending primitives instead of the TIS-100 asm? Of course, each BF interpreter would be working with only, say, 2 or 3 cells of RAM. I want to see either that, or a TIS-100 asm compiler for GreenArray chips. Or both.
- flamedoge 10y ago"Just because you can, doesn't mean you should"
- gene-h 10y ago"Just because we shouldn't doesn't mean we won't"
- qwertyuiop924 10y ago"...and when we do, it's gonna be awesome!"
- faragon 10y agoAfter Intel adding deep-learning instructions to its processors, I guess they could add BrainFuck extensions to the x86 ISA, too.
- posterboy 10y agoAll 6 BF commands have x86 opcode counterparts, already. Don't quote me, I'm guessing.
- userbinator 10y agoNot quite, but an interpreter can be written in less than 100 bytes of x86 instructions: http://www.hugi.scene.org/compo/compoold.htm#compo6 http://www.hugi.scene.org/compo/compoold.htm#compo6
- posterboy 10y agoThe competition rules have added constraints to make the interpreter a usual command line tool. However, with memory mapped input and output ports it becomes a lot easier, which would be akin to 8bit micro controller programming. Parsing would take more than one cpu instruction per BF instruction, so the program would need to be assembled. I don't know x86 well enough to write that, though. I imagined, there would be a single instruction equivalent of 'x=*(p++)', but couldn't find anything like that. In some makeshift syntax and with one instruction too much, I got: >, < = inc, dec al +, - = inc, dec [al] . = out output_port, [al] , = in [al], input_port [ = Label: cmp [al], #0 jnz (Labelend + sizeof (jmp instruction)) ] = Labelend: jmp Label The labels are generated by the assembler. The ports would have to be directly soldered to some I/O peripherie, but alternatively the input and output could be memory mapped and fed by interrupts, as well.
- noipv4 10y agoSCIGen has come a long way to producing a really realistic paper along with the hardware implementation ;) https://pdos.csail.mit.edu/archive/scigen/ https://pdos.csail.mit.edu/archive/scigen/
- r-w 10y agoNot sure whether Iota, Jot, and lambda calculus can be executed instruction-by-instruction, but generally speaking, wouldn’t a Turing-complete language with just two instructions allow for even greater throughput than BrainFuck does?
- rosalinekarr 10y agoWhy two? Why not just one? https://en.wikipedia.org/wiki/One_instruction_set_computer https://en.wikipedia.org/wiki/One_instruction_set_computer
- jsjohnst 10y agoIt's been done... https://news.ycombinator.com/item?id=12372242 https://news.ycombinator.com/item?id=12372242
- haalcion3 10y agoIs this the most the word "fuck" has appeared in a technical paper? It looks like it.
- posterboy 10y agoThe [RSSB] Single Instruction Architecture is interesting for a simple processor implementation as well. [Calfee] mentions a relation to "biological mechanical computer", i.e. neural like. [RSSB] https://esolangs.org/wiki/RSSB https://esolangs.org/wiki/RSSB [Calfee] https://github.com/nospamcalfee/RSSB https://github.com/nospamcalfee/RSSB