на каком уровне распаралеливается код) ) примерно такой вопрос) по сути на ассме нет команды переключения ядер и тп тобиж должен паралелить сап проц а помогать ему компилятор но тогда почему линейная задача использует 1 ядро ведь даже скомпилиная линейная задача во многих местах легко паралелится на уровне проца
ну т. е
MOV ax,10
MAV ax,15
хрен распаралелиш а вот допустим
MOV ax,10
MAV dx,10 по идее 2 команду должно выполнять 2 ядро
Другие языки программирования и технологии
на каком уровне распаралеливается код????
Код может распараллеливаться на уровне данных (векторные команды MMX, SSE), на уровне команд (суперскалярный конвейр) , на уровне потоков (многоядерность и многопроцессорность) , на уровне заданий (кластеры, вычислительные блоки) .
Приведенный пример:
MOV ax,10
MOV dx,10
реализуется на уровне параллелизма команд.
Начиная с процессора Пентиум, несколько независимых команд может быть выполнено одновременно (на одном ядре).
Приведенный пример:
MOV ax,10
MOV dx,10
реализуется на уровне параллелизма команд.
Начиная с процессора Пентиум, несколько независимых команд может быть выполнено одновременно (на одном ядре).
Внутри каждого ядра обычно имеется несколько арифметико-логических устройств и скрытых от прграммиста наборов одноименных регистров, между которыми и распараллеливается автоматически выполнение таких наборов команд.
Распаралеливание происходит в момент разделения потоков. То есть, код, который выполнается в единном потоке никогда не будет распределён на 2 ядра, так как один участок кода может жёстко зависить от другого участка, и потому разделение на 2 ядра может привести к плачевным последствиям. Однако, когда Вы разделяете один процесс на 2 потока, то каждый поток получает свою квоту на выполнение (то есть для процессора это уже 2 независимые задачи) и тогда оба кода могут выполняться одновременно и висеть соответственно на разных ядрах. Не знаю как в асме, а вот в делфи есть специальный набор классов для работы с потоками (TThread). Так что явное распараллеливание создаётся программистом.
На уровне цепочек он распаралеливается. Каждая цепочка - одно ядро. У вас одна цепочка, вот ваш код и не паралелится.
У многоядерных процессоров общая память, но разные регистры, поэтому ваш код для второго ядра - полная бессмысленность. ТО есть да, конечно-же можно выполнять каждую вторую команду на втором ядре, но получится полная чушь (регистры-то не копируются).
У многоядерных процессоров общая память, но разные регистры, поэтому ваш код для второго ядра - полная бессмысленность. ТО есть да, конечно-же можно выполнять каждую вторую команду на втором ядре, но получится полная чушь (регистры-то не копируются).
Похожие вопросы
- Научите меня составлять бинарные коды.На начальном уровне.Незнаю зачем просто очень хочется.
- Ищу идею на разработку /в качестве повышения своего уровня кода/
- Вопрос по основам машинного кода и бинарного кода. Как это работает в своей основе?
- Ассемблерная вставка в С .Странный код. Можете расшифровать?
- как прописать bat код в сайт
- Что для вас "говно код" ?
- как научиться писать хороший код? В смысле я даже не понимаю что такое хороший код. Что такое хороший код?
- ООП это когда данные управляют кодом а функциональное когда код данными?
- Получение опыта в области программирования (архитектура программы, качество кода).
- Как понять машинный код ?(Компилятор переводит исходный код компьютерной программы в машиный код).