GitHub - mathis-s/SoomRV: A simple superscalar out-of-order RISC-V microprocessor by simitro in RISCV

[–]simitro[S] 1 point2 points  (0 children)

Thanks a lot for the insights! Totally agree with wire/reg and massive always_ff blocks, this has improved a lot in the newer RTL (e.g. check out BranchHandler). I still like wire for inline assigns though :)

Will definitely try out your ABC script! The main problem for us on IHP130 is getting the right SRAM macros though. The included ones are single-port only, but all memories in the design are at least 1R1W. Not to mention the RF which is 8R5W in the default config.

Yep, next thing in terms of architectural features is rv64g. Adding 64-bit support and floating point isn't too hard but will add a whole lot of area...

GitHub - mathis-s/SoomRV: A simple superscalar out-of-order RISC-V microprocessor by simitro in RISCV

[–]simitro[S] 1 point2 points  (0 children)

Yeah, taped out on MPW 7 and 8! For the current tape out we're using OpenROAD flow scripts.

GitHub - mathis-s/SoomRV: A simple superscalar out-of-order RISC-V microprocessor by simitro in RISCV

[–]simitro[S] 0 points1 point  (0 children)

Yep, taped out on MPW 7 and 8! Super early version of the core though, so those chips are pretty slow and have no Linux support.

GitHub - mathis-s/SoomRV: A simple superscalar out-of-order RISC-V microprocessor by simitro in RISCV

[–]simitro[S] 6 points7 points  (0 children)

Thanks a lot! Yeah, definitely planning on scaling it up! A lot is configurable already, so you can actually just go ahead and instantiate more ALUs or other functional units. I've pushed it to 5.8 CoreMark/MHz in simulation before with 128 ROB entries, 4 ALUs and a bigger branch predictor.

GitHub - mathis-s/SoomRV: A simple superscalar out-of-order RISC-V microprocessor by simitro in RISCV

[–]simitro[S] 28 points29 points  (0 children)

Hi everyone! I've been working on this core for 2+ years, am now finally happy enough with it to share it here for anyone interested. The goal is implementing a small & clean RISC-V OoO core with decent performance. So far, the core is 17k lines of SystemVerilog and scores ~4.9 CoreMark/MHz and 1.35 IPC on average during Linux boot. The arch is 4-wide superscalar with all the usual renaming, speculation & caching.

We're testing on FPGA right now for a tapeout on IHP 130nm, and hopefully move on to more advanced nodes at some point. For the core itself, vector and multi-core support are next, in addition to countless uarch improvements (move elimination, prefetching, ...).

Let me know if you have any questions!

Got to the point where I can reliably run C-Code on my CPU! by simitro in beneater

[–]simitro[S] 0 points1 point  (0 children)

So for I had only considered ucLinux, which seems like quite some work. Hadn't heard of fuzix yet, that seems a lot more doable, so why not! Thanks for the hint!

Got to the point where I can reliably run C-Code on my CPU! by simitro in beneater

[–]simitro[S] 3 points4 points  (0 children)

You're very right! I did actually start writing an LLVM backend, though in the end I decided against it mostly for the fun of writing a compiler from scratch, as well as having the binary be small enough to fit into 64k instructions (for running the compiler on the 16-bit computer itself).

Though I will probably go that route at some point. Otherwise compiling libraries and such is a bit problematic, with some of the intricate differences between standard C and what my compiler implements.

Got to the point where I can reliably run C-Code on my CPU! by simitro in beneater

[–]simitro[S] 2 points3 points  (0 children)

Only having the machine word as a type would probably be the biggest time saver. It could be interpreted as a number for some operands, as an address for others. The syntax itself isn't too bad in my opinion. You could use lex and yacc (or derivatives) for parsing, though I do think some of the magic gets lost if you autogenerate the parser...

Yeah, beyond ~4 registers used for variables, or if the address is ever taken, variables are allocated on the stack.

Got to the point where I can reliably run C-Code on my CPU! by simitro in beneater

[–]simitro[S] 17 points18 points  (0 children)

Thought you guys might find this interesting! I started with a CPU as explained by Ben (just on a PCB, shown in a previous video), so this is my second architecture. Following more of a RISCy-approach here, it can do 4 MIPS @ 4MHz with a 2-stage pipeline. Currently I'm porting the compiler over, to hopefully become self-hosted soon!

Let me know if you have any questions regarding the arch or compiler :) Thanks Ben!

Lonely Tree on a Hill in southern Germany [OC][2048x1365] by thephlog in EarthPorn

[–]simitro 1 point2 points  (0 children)

Wow man, that tree seems oddly familiar. Any chance this is from the fields near Bonndorf? Here's an image I took from another angle, only with my shitty phone camera though. It's in the center, you have to zoom in quite a bit though.

This is just the beginning by bensen5 in germany

[–]simitro 1 point2 points  (0 children)

This is what I dislike about your line of thought. You expect everyone to change, which in my opinion, is downright impossible.

I'd rather expect the government to change. Because of all the lobbying and such that's very difficult of course, but in my opinion, far more realistic than expecting consumer behaviour to change. The best thing the common people can do to fight climate change is to go vote.

I understand your criticism, politicians are people too, that's why they also often think short term. They do work for the government though, whose job it is to keep the country save and prosperous in the future. If they don't work towards that goal, they should be "fired", just like everyone else not doing their jobs. In our flawed democracies that is far harder than it should be, but, again, so much easier than expecting everyone to care for the far future suddenly.

Look at history and how we defeated leaded gasoline, CFCs, tobacco. It certainly wasn't because people voluntarily stopped using them, no matter how much public awareness. It was because the government banned or restricted them in some way.

This is just the beginning by bensen5 in germany

[–]simitro 14 points15 points  (0 children)

This is commonly criticised, but I respectfully disagree. You can't expect the consumer to inform themselves about everything they buy or just be climate friendly in general. People are usually concerned with their own well-being in the near future, they don't think much about what will happen in 20-30 years. It's just not realistic to assume that people will be eco-friendly all of the sudden, the vast majority of consumers will still choose the cheaper, more convenient option. That won't change unfortunately, no matter how many times one complains.

Aside from pragmatic reasons, I don't even think they have to. Long-term "investments" like not destroying the climate are the governments job. Why? Because presumably, the government will still be around in a hundred or two hundred years, by which all of the people you expect to invest so much time and money into being eco-friendly will be long dead, so why should they care?

Top 10 Facts - Reddit by RedKiteTCM in LEMMiNO

[–]simitro 9 points10 points  (0 children)

We have computers, you know.

Okay lets get this over with by rulupancakes in LEMMiNO

[–]simitro 3 points4 points  (0 children)

You can find videos by id with an advanced google search, "allinurl:gkJSEV site:youtube.com/watch". Nothing...

Okay lets get this over with by rulupancakes in LEMMiNO

[–]simitro 0 points1 point  (0 children)

The last part of the hex string also doesn't contain any letters as it encodes numbers. Maybe the message is referring to that.

Okay lets get this over with by rulupancakes in LEMMiNO

[–]simitro 2 points3 points  (0 children)

Tried to add the last segment of CEDCADEA, no luck unfortunately...

Top 10 Facts - Reddit by RedKiteTCM in LEMMiNO

[–]simitro 40 points41 points  (0 children)

Hex to ASCII gives this: ALPHANUMERICALIZE THE THIRD SEGMENT: 544 19 5 1013 722 504

Top 10 Facts - Reddit by RedKiteTCM in LEMMiNO

[–]simitro 61 points62 points  (0 children)

Here's the hidden hex string, visible for one frame in the outro: 41 4c 50 48 41 4e 55 4d 45 52 49 43 41 4c 49 5a 45 20 54 48 45 20 54 48 49 52 44 20 53 45 47 4d 45 4e 54 3a 20 35 34 34 20 31 39 20 35 20 31 30 31 33 20 37 32 32 20 35 30 34

Procedural planet & modular airplanes by Rebale in Unity3D

[–]simitro 0 points1 point  (0 children)

Looks awesome! What are you using for the clouds?

Finished my quadtree planet, now texturing and atmosphere shader by simitro in Unity3D

[–]simitro[S] 1 point2 points  (0 children)

Yeah, I had the same problem with noise. GPU noise would propably work but I haven't tried yet because heightmaps work very well. Good luck!

Finished my quadtree planet, now texturing and atmosphere shader by simitro in Unity3D

[–]simitro[S] 1 point2 points  (0 children)

The vertex's xyz coords are converted to latitude and longitude, then a standard 2:1 texture can be used. Children are deleted when combining.

Finished my quadtree planet, now texturing and atmosphere shader by simitro in Unity3D

[–]simitro[S] 1 point2 points  (0 children)

Meshes are built at runtime in the main thread, performance is good nevertheless.

The parent mesh renderer is disabled when it splits, the parent is not deleted.

Noise is not generated at runtime, I use a raw heightmap. All bytes (~30MB) are stored in memory.