2015-08-20 2 views
0

По моему мнению, для каждого ядра ARM есть индивидуальные счетчики программ (если в его четырехъядерном ядре будет 4 отдельных счетчика программ, которые будут указывать на 4 разных местоположения кода для параллельного выполнения).Как получить доступ к регистрам счетчиков программ для многоядерного процессора ARM

Правильно ли я понимаю? Если да, то как я могу получить доступ к каждому из этих счетчиков программ (например, на ассемблере). PC[0], PC[1],PC[2], PC[3]?

+2

Есть 4 _CPUs_. Каждый из них индивидуально ведет себя точно так же, как один процессор, потому что это то, что он есть. доступ к чужим регистрам напрямую, поэтому предпосылка вопроса не имеет смысла. – Notlikethat

ответ

2

Точно так же, как и на одноядерном ARM, поскольку каждый процесс в вашей системе выполняется самостоятельно ядро в любой момент (может переключиться на другое ядро, но это зависит) и видит свой собственный счетчик одной программы.

+0

Не могли бы вы дать мне знать, как я могу перейти к ядру - я имею в виду, есть ли конкретный регистр, где мы можем сказать, какие регистры процессора мы теперь манипулируем? – robomon

+1

@ robomon Вы не можете «переключиться» на ядро как таковое на уровне кода - все процессоры будут запускать один и тот же код на адресе сброса, поэтому у вас, как правило, есть очень ранняя логика (возможно, испеченная в загрузчик) для чтения MPIDR и условной ветви на основе значения, чтобы отправить разные ядра в разных направлениях. В качестве альтернативы, основной ЦП может сделать что-то, чтобы изменить фактический код, который у вектора сброса, прежде чем поднимать второстепенные, для аналогичного эффекта. – Notlikethat

+0

Как я понял, все процессоры начнут выполнять один и тот же код. В какой-то момент они будут проверять, в каком CPU они выполняются. Пример. Если вы CPU0, тогда переходите к другому коду, если вы CPU1, тогда переходите к другому, и он идет. Я правильно понял? – robomon

Смежные вопросы