4 ms·
I haven't done the research, but I can't believe most of the information could be that hard to find or wrong, at least if you know where to look. These sorts o
by mgaunard 3y ago
I haven't done the research, but I can't believe most of the information could be that hard to find or wrong, at least if you know where to look.
These sorts of topics are usually well-covered in the matching undergraduate-level computer science courses (computer architecture and operating systems, which, these days, are mostly optional since out of fashion).
Several universities have free courses available, and some of the professors in the field have also written books.
You'll also find pretty informative presentations in the relevant tech conferences if you'd rather stay closer to the state of the art.
Still, teaching is an art that is undervalued, and making the information more available or more fun to interact with is certainly very valuable.
- archmaster 3y ago"Wrong" is perhaps not the most accurate word. I most often found information to be either extremely oversimplified such as to be unhelpful, or outdated and no longer relevant for current systems. Although, yes, some things were just wrong. There are courses and presentations and books, but there aren't many websites or articles — and that's the learning style that works best for me. Undergrad programs will teach a lot of what I covered (though certainly not all, and it really depends on the program) but I believe that knowledge should not be gatekept on going to college.
- assbuttbuttass 3y agoUltimately, diving deeper with only websites and articles can be quite challenging. I experienced this myself trying to learn more about the continuation passing style transformation in a compiler. No online websites or articles discussed the topic with any kind of depth. Ultimately I read the classic book "Compiling with Continuations", and it basically cleared up all my confusions. All of this is to say, don't discount books and courses. They will almost always be more in depth and correct than what you will find written up on a website.
- archmaster 3y agoI think you are very correct, and I don't like it. There should be more "online books" that are in depth and correct!
- assbuttbuttass 3y agoAgreed!
- vmladenov 3y agoHave a look at this one! https://github.com/angrave/SystemProgramming/wiki https://github.com/angrave/SystemProgramming/wiki It was still in development when I went, looks like they made a PDF now. https://github.com/illinois-cs241/coursebook https://github.com/illinois-cs241/coursebook
- cinntaile 3y agoThe course was changed from cs241 to cs341 so I think the most up to date version is here [0] now. [0] https://cs341.cs.illinois.edu/coursebook/index.html https://cs341.cs.illinois.edu/coursebook/index.html
- Const-me 3y agoI share the OP’s opinion that a lot of available information is incorrect. It seems the industry is moving faster than the academics who write books and university courses can update these sources. Big endian CPUs, CPU architectures other than AMD64 and ARM, x87 FPU, are examples of the topics which are no longer relevant. However, these topics are well covered because they were still relevant couple decades ago when people wrote these sources. Some details of modern hardware are secret. An example from low-level programming, many sources claim CPUs have two kinds of branch predictors, static one which predicts forward branches as not taken, and the dynamic one which queries/updates these BTB entries. This is incorrect because mainstream CPUs made in the last 15 years no longer have the static one. However, the details of modern branch predictors are proprietary, so we don’t have authoritative sources on them. We only have speculations based on some micro-benchmarks.
- zerohp 3y ago> However, the details of modern branch predictors are proprietary, so we don’t have authoritative sources on them. I focused on Computer Architecture for a masters degree and now I work on a CPU design team. While I cannot say what we use due to NDA, I will say that it is not proprietary. Very nearly everything, including the branch predictors, in modern CPUs can be found in academic research. Many of these secrets are easily found in the reading list for a graduate-level computer architecture course. Implementation details vary but usually not by too much.
- Const-me 3y agoI’m not related to academia. I don’t design CPUs. I don’t write operating systems and I don’t care about these side channel attacks. I simply write user-mode software, and I want my code to be fast. The academic research used or written by CPU designers being public doesn’t help me, because I only care about the implementation details of modern CPUs like Intel Skylake and newer, AMD Zen 2 and newer. These details have non-trivial performance consequences for branchy code, but they vary a lot between different processors. For example, AMD even mentions neural networks in the press release: https://www.amd.com/en/technologies/sense-mi https://www.amd.com/en/technologies/sense-mi
- deleted 3y ago[deleted]