130
votes
What is meant by the phrase “Software can replace hardware”?
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 ...
95
votes
Accepted
How does a single thread run on multiple cores?
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 ...
42
votes
What is meant by the phrase “Software can replace hardware”?
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;
...
32
votes
Accepted
Why does Mike Pound measure his computer's computational ability by its graphics cards, and not its processors?
Mike Pound obviously values the computational ability of the graphics cards higher than the computational ability of the CPUs.
Why?
A graphics card is basically made up of MANY simplified ...
29
votes
How does a single thread run on multiple cores?
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 ...
29
votes
How does a single thread run on multiple cores?
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 ...
28
votes
What is meant by the phrase “Software can replace hardware”?
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 ...
11
votes
What is meant by the phrase “Software can replace hardware”?
Another field in which this is true is synthesisers.
Early synthesizers were 100% analog hardware that generated waveforms directly then modified them via circuitry (filters, amplifiers, etc.). It ...
11
votes
Accepted
What role did hardware improvements have in the development of modern languages (eg Python / Java)?
No, the available hardware resources do not seem to have a significant impact on programming language design.
Garbage collection was not an innovation by 90's languages. Instead, it was available ...
10
votes
How does the Base Address Registers (BARs) in a PCI card work?
This question should be moved to stackoverflow. Maybe someone will do that.
Am I correct?
Essentially, yes.
Each BAR holds the address of a communication area. This address can be set and read ...
8
votes
Accepted
What does "data bus control" mean?
Yes. The DMA controller takes ownership of the bus for the duration of the transfer.
That said, I feel obliged to point out that at least on PC-based machines, DMA controllers have been almost ...
7
votes
Why running threaded algorithms with exact number of cores the machine has, is faster than anything else?
Some of the many things that may or may not be relevant include:
if the threads use all CPU time they're given, or are constantly blocking/unblocking (e.g. for file IO, time delays, mutexes, ...)
...
7
votes
Accepted
How data is accessed in Memory-Mapped I/O?
So basically you access the device controller registers through memory.
Not exactly, which is why the diagram in the question doesn't quite depict memory-mapped I/O.
Memory-mapped I/O uses the same ...
7
votes
Accepted
How is it possible to have limitless availability of threads while only having a finite number of physical processing units?
A processor with 2 cores operating at 1 kHz can execute 2000 commands per second, right?
Not quite. For the simplest processors, that might be true. But many processors can can execute multiple ...
7
votes
How are electrons moved in processors/CPU?
The symbol below represents a transistor, the fundamental element of any modern computing device. It acts as a switch; current (the movement of electrons) flows from the bottom wire to the top wire ...
6
votes
What does "address space" means when talking about IO devices?
An Address Space is simply a range of allowable addresses.
An I/O address is a unique number assigned to a particular I/O device, used for addressing that device. I/O addresses can be memory-...
6
votes
Accepted
Why do disks write data in chunks of page size?
That's due to the mechanics.
A disk is a surface which rotates around its axis at a high speed (in reality several surfaces). The surface is divided into concentric tracks, and a motor controls the ...
6
votes
Is it possible to write unit tests for embedded systems with no prior embedded programming knowledge?
I had been programming embedded systems for a while. I think the key thing you need to write good unit tests for embedded systems is that you need to have a clean interface for accessing hardware.
If ...
6
votes
Accepted
How to show fluctuating data smoothly and accurately?
As @amon already noted, domain knowledge may help to find an appropriate function.
For a vehicle tank you need to consider two types of value change: slow fuel consumption and fast fill. There are ...
5
votes
What is meant by the phrase “Software can replace hardware”?
A comparison between the arcade game Tank (circa 1976) and the home console game Combat (1977) yields a nice example of how software could replace hardware even 40 years ago.
The arcade game Tank (...
5
votes
Is it possible for a computer system to have constant/zero CPU load?
Could computer systems theoretically have constant/zero/minimum CPU load ?
Of course they can, theoretically. There are three scenarios that I can think of:
Temporary zero CPU load when waiting for ...
5
votes
OO software design for interfacing hardware
You mentioned COM ports, so I'll specifically address that case.
Designing and structuring classes around hardware interfaces to maximize encapsulation.
There are two broad ways to utilize ...
5
votes
Why does Mike Pound measure his computer's computational ability by its graphics cards, and not its processors?
Check out https://developer.nvidia.com/cuda-zone (and google cuda nvidia for lots more info). The cuda architecture and high-end graphics cards are pretty widely used for desktop supercomputers. You ...
5
votes
What does "address space" means when talking about IO devices?
The basic idea is pretty simple: a chip can have one bus to connect to memory, and a second bus to connect to I/O devices--or it can share a single bus between the two.
In practice, even a CPU that ...
5
votes
Are design principles of functional programming languages and current hardware (register-machines) contrary?
Functional programming is not inherently inefficient. There is no reason why the language semantics have to closely match the underlying execution model, although a closer match certainly makes ...
5
votes
Accepted
API and motherboard
You're confusing two fairly different realms of the overall computing system.
APIs are fairly high level constructs, built over many layers of abstraction.
Motherboards and CPUs are way, way down ...
5
votes
What is hardware debugging?
Debugging HDL normally has 2 major steps after just looking at the code.
Analysing the logic: this is normally done but simulating the behaviour of the hardware and the usual software process kicks ...
5
votes
Can we reliably use unaligned scalars on contemporary hardware?
This is really architecture-dependent. No processor will just crash, but some architectures will raise exceptions for unaligned accesses. The performance overhead from unaligned accesses (if allowed) ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
hardware × 151computer-architecture × 14
cpu × 12
testing × 10
performance × 10
design × 9
architecture × 8
multithreading × 7
software × 7
io × 7
memory × 6
operating-systems × 6
drivers × 6
design-patterns × 5
c++ × 5
c × 5
c# × 4
programming-languages × 4
gpl × 4
optimization × 4
requirements × 4
linux × 4
java × 3
python × 3
programming-practices × 3