45,315 karma · joined August 31, 2009
[1] I literally wrote the paper on this back in 1996: https://www.doc.ic.ac.uk/~phjk/BoundsChecking.html
As far as I could tell the cable is dumb. If you plug the cable into a regular USB-C socket (which I do not recommend) then the tip is +5V and the rest is ground.
In fact it's designed to plug into the plug marked "mobile" on the amp and the 3.5mm end goes into the line out of something else, providing AUX input, which is mixed straight through to the output of the amp (which is thankfully a regular 3.5mm headphone jack).
I guess they over-ordered USB-C sockets and decided to yolo it, or else for some reason only USB-C footprints fit into the space on the PCB. (But they still had to manufacture or were able to obtain these cursed cables ... it doesn't make a lot of sense.)
With the caveat that I work for IBM but have no inside knowledge about anything important, it doesn't seem very bad to me? Overall profit is going to be down a tiny amount below expectations.
I don't think you're going to find a single benchmark on the effectiveness of compressed instructions since it really depends deeply on both the workload and the whole system. For example, memory bandwidth and cache pressure are both important for whether smaller text sizes matter, and that may depend on what else is running at the same time.
Note your assembler may be automatically compressing instructions without you asking. You'll have to disassemble the binary to find out.
A bunch of vendors have done high performance server chips which support compressed (Rivos, Ventana, some Chinese vendors), so in actual reality this was only a problem for Qualcomm. And that's only because Qualcomm bought Nuvia and they wanted to do the cheap thing (minimally change the front end) rather than the right thing.
The rationale for this and also for confining the base set to 32 bit is explained here: https://docs.riscv.org/reference/isa/v20250508/unpriv/extend...
I'm not sure what point you're making TBH.
Requiring C (compressed) is necessary to avoid splitting the Linux ecosystem. Chips lacking C would never be able to run binaries compiled with C. There's no practical way for such binaries to detect this and work around it at runtime as they can with other extensions. And emulation would be super-slow given a large proportion of instructions are compressed.
Also the excuse given by Qualcomm - that it would make all instructions fixed length and so much easier to decode - is just wrong. RISC-V supports variable length instructions, even much longer than 32 bits, and you've just got to deal with it. Just because Qualcomm acquired a company with a microarchitecture that could only deal with fixed length instructions is no reason to break the ecosystem.
Also interested in the problems you see in Zicond. It claims at least to give you most of the benefit of conditional moves using only two instructions, but I've not actually tried using it. (https://docs.riscv.org/reference/isa/extensions/zicond/_atta...)
In other words, they don't care at all. For them, residential bandwidth is completely free.