Electronic – Is it true that on a modern processor, parallelism is possible on a single core

cpumulticoreparallel

Final Edit: I just realized that when use the word "parallelism", it's almost parallelism==ILP, I originally thought even a single instruction could be divided into several phrases, and at that level there would be some parallelism, but then I realized this has no meaning. Both my title and my example didn't mentioned anything about more than one threads' parallelism as done by HyperThreading, so @user110971's is the correct answer, without doubt anymore. (In the philosophical level, I just need a base-case condition to return my recursiveness of finding the deepest part of parallelism)

Edit3: I made a graph for my Edit2, and I found this video on YouTube about HyperThreading useful.
enter image description here

Edit2: In short, for my question I adopt the definitions on Wikipedia, and for the definition of the terms:

  • Parallel: Two threads, run independently, at any physical instant. So one thread won't interrupt the other, at any instant.
  • Concurrent: Two threads, run independently, interleavedly is allowed, i.e. not restricted to parallel, and one can interrupt the other.
  • In short, for me and Wikipedia writers, Concurrent includes Parallel. Thanks.

Edit: Just to be clear, for me parallelism means true parallelism, I add a "true" for it because people I talked to tend to think parallel==concurrent. (See my second link)


Is it true that on modern processor, "true" parallelism is possible on a single core? I asked elsewhere but didn't get a confirming answer. What I want to know is e.g. whether at t=0, two instructions are fetched and executed. At the same physical instant.

My question came from here:

parallel computing is impossible on a (one-core) single processor, as only one computation can occur at any instant (during any single clock cycle).

Best Answer

It is indeed possible to have parallelism on a superscalar processor. A superscalar processor can execute multiple instructions at the same time by using multiple execution units. pipeline There are certain limitations depending on the architecture. It is not true parallelism. If you have to calculate $$A = B + C,$$ $$D = A + 3,$$ you cannot execute both instructions at the same time. However you can execute $$A = B + C,$$ $$D = D + 3,$$ simultaneously by utilizing two ALUs.

So as an answer to your question, you can have a certain level of parallelism on a single core, as long as your instructions do not use the same hardware resources.

Related Topic