6 ms·
Note: It's not emulation but ahead-of-time cross-compilation. This has some limitations, most notably x86 VMs are not possible. From my POV, the future of busi
by m_mueller 6y ago
Note: It's not emulation but ahead-of-time cross-compilation. This has some limitations, most notably x86 VMs are not possible.
From my POV, the future of business laptops could be such powerful ARM macs around 1000-1300$ (i.e. quite low priced) coupled with cloud based Windows 10 instances to get all software running. This would then create some pressure on software developers to port over their software at least to Windows-on-ARM which could feasibly run in a local VM.
- varispeed 6y agoI wonder if this ahead-of-time cross-compilation is a way of avoiding licensing issues? It seems like one cannot just make x86 CPU without Intel's agreement, but I couldn't find a source explaining this well. I also can't see why someone cannot do a clean room implementation of the instruction set. Some people wrote to me that it may be to do with patents on some instructions, but I wonder how valid such patents are if they describe an obvious way to do a certain thing (I have not seen the patents, so this is my speculation only).
- justincormack 6y agoI think its just that it works better for most applications, where you run them multiple times. JIT is going to be slower under emulation anyway. Also note that Rosetta uses the native libraries where available, so as soon as you call into say graphics libraries that is running native, not emulating. (I believe most of the relevant patents just expired; they don't emulate the vector instructions that are newer).
- deleted 6y ago[deleted]
- Tagbert 6y agoRosetta 2 is not emulating an Intel CPU. It recompiles the binary to ARM when you run the app for the first time. It also does on-the-fly compilation of JITed code, too. Actual emulation would be much slower.
- samfisher83 6y ago1000-1300 sounds like a lot of money.
- neogodless 6y agoThe key word there is "business" - most laptops geared for corporate (in PC world at least) are the thin and light metal chassis ones. They are easily $1200 for "pretty good" hardware but a sleek look and feel. But the same (core component) hardware in a budget laptop might be $500-800. Business laptops with best in class hardware are often over $2000.
- chrisweekly 6y agoCompared to what? $2-3k for a dev laptop since forever, innit?
- gruez 6y agoMaybe a few years ago, but you can get a fairly beefy 8c16t thinkpad for less than $1300. [1] https://www.lenovo.com/us/en/laptops/thinkpad/thinkpad-t-series/ThinkPad-T14s-AMD-G1/p/22TPT144SA2 https://www.lenovo.com/us/en/laptops/thinkpad/thinkpad-t-ser...
- dr-smooth 6y agoI remember $6K for dev laptops in the mid 90s.
- Rmblnm4n 6y agoSpend half that on a plastic one you want to replace in 2-3 years as it gets banged up. My 2015 MB Pro has a few knicks. Before that I had Lenovo T400 before that was trashed after 3 years. Broken hard drive cover, screws coming loose, etc When it comes to spending on things “you get what you pay for” actually matters. There’s a lot of low cost options that confuse people into thinking they’re better off buying the cheaper version. Ultimately that’s the one designed to be replaced in half the time.
- Wowfunhappy 6y agoIt’s an emulator too though, right? Otherwise things like Chrome (which has a Javascript JIT) would never work in Rosetta.
- AndrewStephens 6y agoRosetta does work with JIT'ed code. I think the way it works is that any code in memory gets the Rosetta magic applied as soon as it is marked executable.
- OJFord 6y agoSo it's sort of adding latency, as a trade-off for speed (once it starts). That makes so much sense and seems so obvious in a 'huh, probably never would have thought of that' sort of way!
- Someone 6y agoRosetta compiles JITted code ahead of time, once the OS detects the code exists. From what I understand, the OS enforces W^X (memory pages that are writable cannot be executable). That means the OS can use the “set page read-only and executable” system calls to detect the existence of JITted code.
- gok 6y agoPretty sure if it’s done ahead of time we can’t really call it “JIT” can we? :)
- konschubert 6y agoI think what get's cross-compiled is the Javascript JIT-Compiler itself. (The V8)
- Wowfunhappy 6y agoThat wouldn't do much, because the JIT would still be producing Intel code, no?
- kzrdude 6y agoOh right, so that means any JIT that expects to generate x86-64 code and run it, can't. Maybe some exceptionally flexible jit implementations run (if they detect which arch to use at run time - sounds very unlikely).
- macjohnmcc 6y agoHow fast is the ARM used in the Windows computers compared to the M1? I would think that if it had the performance of the M1 that we would have seen Windows RT more widely accepted by now.
- culopatin 6y agoDoes Windows have a Rosetta equivalent? If not that might be the answer to why it’s not widespread
- thetinguy 6y agoYes you run x86 apps but not x86_64 on Windows for ARM.
- WorldMaker 6y agoIt did not in the original Windows RT release. Recent versions of Windows 10 on ARM have x86 (32-bit) emulation, which is a different approach to Rosetta, but equivalent in allowing older software to run. Beta and future versions of Windows 10 on ARM will also have support for x64 emulation.