The US chip industry starts to wake up to new competitive reality
archive.is
archive.is
Intel's Optane is the first consumer SSD I've seen that has high performance 4k read write IOPs not unlike memory, but even if you use that as your boot drive we are starting to put pressure on other part of the system. Soon the SSDs will start to have higher performance than their PCIe 3.0 x4 slot and some already need a x8 slot when striping nvme SSDs.
Take a look at https://www.anandtech.com/show/12951/plextor-demonstrates-4w...
Yes.
> OS bloat
Results from tradeoffs against other things and is not going away.
You have options. I used to have a Windows PC for all tasks (with these annoying issues) and have since moved to an iPad for most tasks, a PS4 for games and a MacBook for programming (which I admittedly don‘t do much anymore). SSD speed is not relevant anymore, booting has been replaced by opening/picking up/starting from hibernation.
What I could use now is more memory on or near the CPU maybe like the iPhone A7+.
Apple bought a company that developed NVMe SSD controllers and has been producing it's own custom controllers for a few years now.
https://www.anandtech.com/show/9136/the-2015-macbook-review/...
The 2018 MacBook Pro is just using a newer high performance version of the controller.
>The T2 is also Apple’s SSD controller, so this means that the MBP is getting a SSD upgrade. Apple is now offering up to 4TB of SSD storage on the 15-inch MBP and 2TB on the 13-inch model. And judging from some of the numbers the 4TB iMac Pro has put up with the same controller, the 15-inch MBP stands to have chart-topping SSD performance.
https://www.anandtech.com/show/13073/apple-updates-macbook-p...
In 20 years we'll probably see this in line production. In 40, we might see non volatile storage replace volatile memory for most use cases except things that need to be volatile, such as symmetric crypto keys.
I just bought a new one off eBay from the same year.
Teenage me would not understand. But I think personal computers peaked years ago.
The reason this is possible is I have opted out of “modern” development tools and I write all my own code with a minimum of dependencies. If I was using webpack and Docker I would have to buy a 2018 machine.
I think in the near term we will see micro fluid cooling tech developed for more fully 3D chips. The human brain is a pretty good model for what that may look like
Science fiction likes to point to either optical or some method of quantum interaction computing. I'm actually not sure what the basis for those are, it could be that photon based computers are actually a type of quantum computation system. As I led with, that's stuff I've seen mentioned in fiction.
For all the people who wave the "one true Scotsman" flag at people whinging about the non-native feel of Electron I'd just like to point at Visual Studio Code. Opening a file vs directory on Windows is a hilarious exercise in fermented emacs-like keystrokes. On a Mac, try using the "Window" menu (it doesn't list the children) or try using the minimized window icons (they all have the very useful title "Code").
The Gtk+ bindings are pretty good. Of course, this is not surprising, because Gtk+ was doing OO on top of C.
Gtk+ is not the native widget set on macOS or Windows, but neither is Electron nor 'Servotron' ;).
Electron runs on (at least) Linux, Windows, and Mac OS. That may not be perfect, but, I think its hard to brand that as "not portable".
Take a look at the issues opened for porting Visual Studio Code to not-Linux/not-MacOS/not-Windows. It's non-trivial in large part because Electron is a mess and not officially supported beyond Linux/Mac/Windows.
Edit: None of this is helped with the absolutely shittacular support that Node has for non-Linux unicies. Multi-platform support is one of those things that Rust really gets right.
For example, if you force C to have defined overflow semantics, the code you'll get for a CPU which does not behave in the same way will use an order of magnitude more instructions for that purpose.
[0] a lot of people seem to think that performance is everything but actually uptime and reliability are often more important.
This line of comments is rather silly, as it tries to compare implementations with a language specification described through international standards. Apples and oranges. Mozilla's rust implementation has no undefined behavior because it isn't even defined in any standard document nor are there many competing commercial teams developing rust implementations independently of each other. Complaining that C has undefined behavior but rust hasn't makes as much sense as complaining that C has undefined behavior but MS Visual C 2015 doesn't.
This is not true. “No UB in safe Rust” is a guiding principle of the language design.
(And there is a second implementation of everything but the borrow checker.)
MS Visual C absolutely has UB.
We can only hope that this term never becomes a buzzword.
When you're talking about software you're talking about issuing a series of commands that execute in certain ways that produce a desired result. While you may have threading to give the appearance of concurrency(or actual discrete cores/etc) it's still largely a serial operation(with pipelining under the hood but largely not exposed at a software level).
In contrast FPGAs, CPLDs and the like use as you said Hardware Description Languages. These languages are not about issuing a series of actions but instead describing a blueprint for construction of physical hardware units(via SRAM LUTs, ASIC lithography or the like). Many things that are common and expected as a part of software(looping, blocking, etc) are either anti-patterns to not available at all.
Asking someone who's familiar with software to write HDL is like asking a Civil Engineer to do the job of a Mechanical Engineer in designing the drivetrain of a car. Both are professional engineers but they have vastly different skills.
I've spent a fair time in both worlds(although more on the software side) and learning FPGAs was like hitting a brick wall for ~3 months until you realize you have to unlearn all you know about software and build up an understanding from the hardware side first. It's also probably why firmware engineers tend to write so much copy/paste code and software engineers tend to write code that uses an order of magnitude more resources than they actually need.
This always seemed like limitations of the commonly used HDLs. Both Verilog and VHDL are extremely verbose and do not really allow a lot of abstraction. Even stuff like "I want this module to have a $common_interface" is hard to impossible without just copy pasting the definitions (sure, there are C macros) every time.
Stuff like sync vs async latches, global resets, exact cycle count are things that are critical in HDLs but don't have matter much in software these days.
For SystemC I'm not a huge fan, the types if things you want to describe tend to get bolted on and many constructs just aren't synthesizeable. There's a huge impedence match between the two.
I definitely agree with you there's more to consider when writing for an FPGA but not much more so than let's say writing for a microcontroller where cycles (at least timing) matters. Or anything hard real-time for that matter.
Theoretically I could write any web service in a synthesizable subset of VHDL. Similarly, you could, in theory, compile down any C program into an FPGA bitstream, as both HDLs and C are Turing complete. It may not function efficiently as the right considerations probably haven't been made in your C code to make it easy to do well. I could even turn my C program into an ASIC but that's not the point. The fact that FPGAs are reprogrammable and their functionality is defined in code means they are as much software defined as as any microcontroller. That definition IMO doesn't stretch to ASICs as they are not reprogrammable, and the resulting HDL goes through a huge pipeline of vendor-specific tools to turn the result into silicon.
This is my opinion of course, and I would argue that an FPGA bitstream is equivalent to a ROM for a microcontroller - software that defines the digital electrical characteristics in response to stimuli. Seems that if the latter is defined by software so is the former.