I am surprised nobody mentioned yet one of the most glaring examples: software-defined radio.
If you took a present-day smartphone back in time some 50 years and showed it to a competent engineer from the mid-1960s, he would be able to comprehend most of it. That a supercomputer can be reduced to something that fits in your pocket? Check. That you can have ...
The operating system offers time slices of CPU to threads that are eligible to run.
If there is only one core, then the operating system schedules the most eligible thread to run on that core for a time slice. After a time slice is completed, or when the running thread blocks on IO, or when the processor is interrupted by external events, the operating ...
Benefits of 32-bit software in 64-bit environments
Lower memory footprint, especially in pointer-heavy applications, 64-bit vs 32-bit can easily double the memory requirements.
Object files are smaller as well.
Compatibility with 32-bit environments.
Memory leaks are hard capped to 2 GB, 3 GB, or 4 GB and won't swamp the entire system.
Though they have their own internal IT team, they have asked me on
what will be the hardware requirements for the live servers eg. RAM,
32 bit or 64 bit.
Perhaps they figure that as the developer, you have more insight into the app's requirements than they do. You've presumably been running the application and know how much memory it requires under ...
Really, there is absolutely no reason to exempt developers from having anti-virus software on their machines. And overwhelmingly many reasons to require it.
Most of the disadvantages you mention can be addressed by telling the anti-virus software that your development folder (the one tied to your code repository) is a trusted location. After we had done ...
Consider this circuit:
It is a Flip Flop, aka a Bistable Multivibrator. It can be replaced with this code:
static bool toggle;
if (toggle == true)
lblTop.BackColor = Color.Black;
lblBottom.back Color = Color.Red;
lblTop.BackColor = Color.Red;
lblBottom.BackColor = Color.Black;
toggle = !toggle;
The one reason to use anti-virus software on development machines that trumps all your arguments is:
To comply with security audits.
Banks, government agencies, large regulated firms with sensitive data don't have a choice on this matter.
It turns out you only need one instruction to build a machine capable of Turing-computation. This class of machines that have only one instruction and are Turing-complete is called One Instruction Set Computers or also somewhat jokingly Ultimate RISC.
Management understands it will take longer to develop and maintain software when you don't have full access to test hardware. You need to take this into account when doing your estimates. Part of the acceptance criteria for putting your software into production should be that you have a way to maintain the software under most circumstances without stopping ...
Mike Pound obviously values the computational ability of the graphics cards higher than the computational ability of the CPUs.
A graphics card is basically made up of MANY simplified processors which all run in parallel. For some simulation work, alot of the computation can be easily parallelised and processed in parallel on the thousands of cores ...
CPU (its memory controller specifically) can take advantage of the fact that the memory is not mutated
Advantage is, this fact saves compiler from using membar instructions when data is accessed.
A memory barrier, also known as a membar, memory fence or fence instruction, is a type of barrier instruction which causes a central processing unit (CPU) or ...
It means exactly what it sounds like.
A particularly famous example is the Disk II Drive designed by Steve Wozniak for the Apple II:
The chief innovation was making the controller compact by using software while competitors relied on hardware. As Bill Fernandez, then an electronic technician at Apple, remembers it, "the key advantage of [Wozniak's] ...
On developer machines? Yes because developers tend to download all sorts of things (both related and unrelated to work).
On build machines, it's also important simply to protect yourself. It would really stink to deploy/ship your code only to find that it has a virus once it makes it to its destination.
Intel had 5 pipeline stages in its original Pentium architecture. The number of stages peaked at 31 in the Prescott family, but decreased after that. Today, in the Core series II processors (i3, i5, and i7), there are 14 stages in the processor pipeline.
Microarchitecture Pipeline stages
P5 (Pentium) 5
P6 (Pentium 3) 10
P6 (Pentium ...
There is no such thing as a single thread running on multiple cores simultaneously.
It doesn't mean, however, that instructions from one thread cannot be executed in parallel. There are mechanisms called instruction pipelining and out-of-order execution that allow it. Each core has a lot of redundant resources that are not utilized by simple instructions, ...
summary: Finding and exploiting the (instruction-level) parallelism in a single-threaded program is done purely in hardware, by the CPU core it's running on. And only over a window of a couple hundred instructions, not large-scale reordering.
Single-threaded programs get no benefit from multi-core CPUs, except that other things can run on the other cores ...
The existing answers focus on ISA changes. There are other hardware changes, too. For instance, C++ commonly uses vtables for virtual calls. Starting with the Pentium M, Intel has an "indirect branch predictor" component which accelerates virtual function calls.
The keyword for thinking about these things is abstraction.
Abstraction just means deliberately ignoring the details of a system so that you can think about it as a single, indivisible component when assembling a larger system out of many subsystems. It is unimaginably powerful - writing a modern application program while considering the details of memory ...
First of all, computers come with specialized hardware. Every laptop and desktop computer sold for quite a few years now has a specialized co-processor, a Graphics Processing Unit, that handles visual-processing algorithms, such as video and gaming applications require. Very large computers (e.g., "supercomputers", IBM's System Z family) have a variety of ...
Because most retro-computers had only one CPU (i.e. one core, in today's terminology).
Emulating in parallel a sequential computation is not reasonable (and realistically not feasible).
The graphical cards (or other devices) at that time did not "compute", only "display" (or do input/output). No need to emulate it in parallel.
And the rare exceptions (for ...
is it my responsibly to let them know of the any specific hardware requirements which may impact the performance of the project?
It is responsibility of a product provider (your company, in this case) to define minimum requirements for the successful product operation. As a responsible person within your company; it might be tech-lead of the project (sounds ...
In the context of the paper you linked, the words "micro-coded machine" would almost certainly refer to a Lisp Machine.
At the time Lisp was beginning to get a foothold, it was hoped that it would be run (in the general case) on machines that were designed specifically to execute Lisp instructions, rather than computers with a more general instruction set ...
The Intel 8086 instruction set includes a variation of "ret" which adds a value to the stack pointer after popping the return address. This is useful for many Pascal implementations where the caller of a function will push arguments onto the stack before making a function call, and pop them off afterward. If a routine would accept e.g. four bytes' worth of ...
These numbers (also listed on Norvig's Teach yourself Programming in 10 years) are approximate, only useful as (order of) magnitude.
Actually, today's hardware (at least for desktop or laptops) does not vary that much even between a cheap 300€ laptop and a high-end 10k€ workstation. The speed varies by a factor of roughly 2 or 4 at most. Such a workstation ...
It's important to distinguish between 64-bit architectures in general and the 64-bit architectures we commonly see. In an abstract sense, a 64-bit architecture just gives you wider registers (bigger numbers and more addressable memory). Looking at concrete examples of architectures, you see that the 32 to 64-bit jump was used as an opportunity to make ...
Where there's an operating system involved, programs don't talk to device drivers, at least not directly. Programs talk to abstractions that, unbeknownst to them, eventually end up talking to device drivers by way of one or more layers of abstraction.
I'm going to skip the complexities of modern operating systems and use CP/M, a microcomputer operating ...