Что такое блок управления: компоненты и его конструкция

Попробуйте наш инструмент устранения неполадок





Блок управления является основным компонентом центрального процессора (ЦП) в компьютерах, который может управлять операциями во время выполнения программы посредством процессор / компьютер. Основная функция блока управления - извлекать и выполнять инструкции из памяти компьютера. Он получает инструкцию / информацию ввода от пользователя и преобразует ее в управляющие сигналы , которые затем передаются ЦП для дальнейшего выполнения. Он включен как часть архитектуры фон Неймана, разработанной Джоном Нейманом. Он отвечает за предоставление сигналов синхронизации и сигналов управления, а также направляет выполнение программы центральным процессором. Он включен как внутренняя часть процессора в современные компьютеры. В этой статье дается полная информация о блоке управления.

Что такое блок управления?

Компонент, который получает входной сигнал / информацию / инструкцию от пользователя и преобразует в управляющие сигналы для выполнения в CPU. Он контролирует и направляет основную память, арифметико-логический блок (ALU), устройства ввода и вывода, а также отвечает за инструкции, которые отправляются в ЦП компьютера. Он получает инструкции из основная память процессора и отправляется в регистр инструкций процессора, который содержит содержимое регистра.




Блок-схема блока управления

Блок-схема блока управления

Блок управления преобразует входные данные в управляющие сигналы, а затем отправляет их процессору и направляет выполнение программы. Операции, которые должны быть выполнены, направляются процессором компьютера. В основном центральный процессор (ЦП) и Блок графической обработки (GPU) требуют блока управления в качестве внутренней части. Блок-схема блока управления показана выше.



Компоненты блока управления

Компоненты этого блока являются инструкциями регистры , управляющие сигналы внутри ЦП, управляющие сигналы к / от шины, управляющая шина, входные флаги и тактовые сигналы.

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

Функции

В функции блока управления включая следующее.


  • Он направляет поток последовательности данных между процессором и другими устройствами.
  • Он может интерпретировать инструкции и управлять потоком данных в процессоре.
  • Он генерирует последовательность сигналов управления из полученных инструкций или команд из регистра команд.
  • Он отвечает за управление исполнительными блоками, такими как ALU, буферы данных и регистры в ЦП компьютера.
  • У него есть возможность получать, декодировать, обрабатывать выполнение и сохранять результаты.
  • Он не может обрабатывать и хранить данные
  • Для передачи данных он связывается с устройствами ввода и вывода и управляет всеми блоками компьютера.

Конструкция блока управления

Дизайн этого можно сделать с помощью двух типы блока управления которые включают следующее.

  • На основе проводного
  • Микропрограммная (одноуровневая и двухуровневая)

Проводной блок управления

Базовая конструкция проводного блока управления показана выше. В этом типе управляющие сигналы генерируются специальным оборудованием. логическая схема без каких-либо изменений в структуре схемы. В этом случае сгенерированный сигнал не может быть изменен для выполнения в процессоре.

Базовые данные кода операции (код операции инструкции отправляется в декодер инструкции для декодирования. Инструкция декодер - это набор декодеров для декодирования различных типов данных в коде операции. Это приводит к выходным сигналам, которые содержат значения активных сигналов, которые подаются в качестве входных данных для генератора матриц для генерации сигналов управления для выполнения программы процессором компьютера.

Блок управления на основе проводного подключения

Блок управления на основе проводного подключения

Генератор матриц выдает состояния блока управления и сигналы от процессора (сигналы прерывания). Матрица построена как программируемая логическая матрица . Управляющие сигналы, генерируемые генератором матрицы, подаются в качестве входных данных в следующую матрицу генератора и объединяются с сигналами синхронизации блока синхронизации, который содержит прямоугольные шаблоны.

Для получения новой инструкции блок управления превращается в начальную стадию для выполнения новой инструкции. Блок управления остается на начальном этапе или на первом этапе до тех пор, пока сигналы синхронизации, входные сигналы и состояния команд компьютера не изменяются. Изменение состояния блока управления может быть вызвано изменением любого из генерируемых сигналов.

Когда возникает внешний сигнал или прерывание, блок управления переходит в следующее состояние и выполняет обработку сигнала прерывания. Флаги и состояния используются для выбора желаемых состояний для выполнения цикла выполнения инструкции.

В последнем состоянии блок управления выбирает следующую команду и отправляет результат в счетчик программ, затем в регистр адреса памяти, в буферный регистр, а затем в регистр команд для чтения инструкции. Наконец, если последняя инструкция (которая выбирается блоком управления) является инструкцией завершения, то она переходит в рабочее состояние процессора и ждет, пока пользователь не укажет следующую программу.

Микропрограммный блок управления

В этом типе управляющая память используется для хранения управляющих сигналов, которые кодируются во время выполнения программы. Управляющий сигнал не генерируется сразу и не декодируется, поскольку микропрограмма хранит адресное поле в управляющей памяти. Весь процесс на одном уровне.

Микрооперации выполняются для выполнения микрокоманд в программе. Блок-схема программируемого блока управления Micro показана выше. Как видно из схемы, адрес микрокоманды получается из адресного регистра памяти управления. Вся информация о блоке управления постоянно хранится в управляющей памяти, называемой ПЗУ.

Блок управления на основе микропрограмм

Блок управления на основе микропрограмм

Микрокоманда из памяти управления хранится в регистре управления. Поскольку микрокоманда имеет форму управляющего слова (содержит двоичные управляющие значения), для обработки данных требуется выполнение 1 или более микроопераций.

Во время выполнения микрокоманды генератор следующего адреса вычисляет следующий адрес микрокоманды и затем отправляет его в регистр адреса управления для чтения следующей микрокоманды.
Последовательность микроопераций микропрограммы выполняется следующим генератором адресов и действует как секвенсор микропрограмм для получения адреса последовательности, то есть считывания из памяти управления.

Код Verilog для блока управления

Код Verilog для блока управления показан ниже.

`include« prj_definition.v »

модуль CONTROL_UNIT (MEM_DATA, RF_DATA_W, RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2, RF_READ, RF_WRITE, ALU_OP1, ALU_OP2, ALU_OPRN, MEM_ADDR, MEM_READ, MEM_WRITE, RF_DATA_DATA, RF_DATA, RF_DATA, RF_DATA)

// Выходные сигналы
// Вывод в регистровый файл

вывод [`DATA_INDEX_LIMIT: 0] RF_DATA_W
вывод [`ADDRESS_INDEX_LIMIT: 0] RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
вывод RF_READ, RF_WRITE

// Выходы для ALU
вывод [`DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
вывод [`ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// Вывод для памяти
вывод [`ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
вывод MEM_READ, MEM_WRITE

// Входные сигналы
ввод [`DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
ввод ZERO, CLK, RST

// Входящий сигнал
inout [`DATA_INDEX_LIMIT: 0] MEM_DATA

// Государственные сети
провод [2: 0] proc_state

// содержит значение счетчика программы, хранит текущую инструкцию, регистр указателя стека

reg MEM_READ, MEM_WRITE
reg MEM_ADDR
рег ALU_OP1, ALU_OP2
reg ALU_OPRN
рег RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
рег RF_DATA_W
состояние reg [1: 0], next_state

PROC_SM state_machine (.STATE (proc_state) ,. CLK (CLK) ,. RST (RST))

всегда @ (posedge CLK)
начинать
если (RST)
государственный<= RST
еще
государственный<= next_state

конец

всегда @ (состояние)
начинать

MEM_READ = 1’b0 MEM_WRITE = 1’b0 MEM_ADDR = 1’b0
ALU_OP1 = 1’b0 ALU_OP2 = 1’b0 ALU_OPRN = 1’b0
RF_ADDR_R1 = 1’b0 RF_ADDR_R2 = 1’b0 RF_ADDR_W = 1’b0 RF_DATA_W = 1’b0

case (состояние)

PROC_FETCH: начало
next_state = `PROC_DECODE
MEM_READ = 1’b1
RF_ADDR_R1 = 1’b0 RF_ADDR_R2 = 1’b0
RF_ADDR_W = 1’b1
конец

PROC_DECODE: начало
next_state = `PROC_EXE
MEM_ADDR = 1’b1
ALU_OP1 = 1’b1 ALU_OP2 = 1’b1 ALU_OPRN = 1’b1
MEM_WRITE = 1’b1
RF_ADDR_R1 = 1’b1 RF_ADDR_R2 = 1’b1
конец

PROC_EXE: начало
next_state = `PROC_MEM
ALU_OP1 = 1’b1 ALU_OP2 = 1’b1 ALU_OPRN = 1’b1
RF_ADDR_R1 = 1’b0
конец

PROC_MEM: начало
next_state = `PROC_WB
MEM_READ = 1’b1 MEM_WRITE = 1’b0
конец

PROC_WB: начало
next_state = `PROC_FETCH
MEM_READ = 1’b1 MEM_WRITE = 1’b0
конец
конец

конец
конечный модуль

модуль PROC_SM (СОСТОЯНИЕ, CLK, RST)
// список входов
вход CLK, RST
// список выходов
вывод [2: 0] СОСТОЯНИЕ

// список ввода
вход CLK, RST
// выводим список
выход СОСТОЯНИЕ

reg [2: 0] СОСТОЯНИЕ
состояние рег [1: 0]
рег [1: 0] next_state

reg PC_REG, INST_REG, SP_REF

`define PROC_FETCH 3’h0
`define PROC_DECODE 3’h1
`определить PROC_EXE 3’h2
`define PROC_MEM 3’h3
`define PROC_WB 3’h4

// инициирование состояния
исходный
начинать
state = 2’bxx
next_state = `PROC_FETCH
конец

// сбросить обработку сигнала
всегда @ (posedge RST)
начинать
состояние = `PROC_FETCH
next_state = `PROC_FETCH
конец
всегда @ (posedge CLK)
начинать
состояние = next_state
конец
всегда @ (состояние)
начинать
if (состояние === `PROC_FETCH)
начинать
next_state = `PROC_DECODE

print_instruction (INST_REG)
конец

if (состояние === `PROC_DECODE)
начинать
next_state = `PROC_EXE

конец

если (состояние === `PROC_EXE)
начинать
next_state = `PROC_MEM

print_instruction (SP_REF)
конец

if (состояние === `PROC_MEM)
начинать
next_state = `PROC_WB

конец

if (состояние === `PROC_WB)
начинать
next_state = `PROC_FETCH

print_instruction (PC_REG)
конец
конец

задание print_instruction

input [`DATA_INDEX_LIMIT: 0] inst

reg [5: 0] код операции
рег [4: 0] RS
рег [4: 0] RT
рег [4: 0] рд
reg [4: 0] shamt reg [5: 0] funct reg [15: 0] немедленный адрес reg [25: 0]

начинать

// разбираем инструкцию
// R-тип

{opcode, rs, rt, rd, shamt, funct} = inst

// Я печатаю
{код операции, RS, RT, немедленный} = inst
// J-тип
{код операции, адрес} = установка
$ write («@% 6dns -> [0X% 08h]«, $ time, inst)
case (код операции) // R-Type
6:00: начало
case (функция)

6’h20: $ write («добавить r [% 02d], r [% 02d], r [% 02d]», rs, rt, rd)
6’h22: $ write («sub r [% 02d], r [% 02d], r [% 02d]», rs, rt, rd)
6’h2c: $ write («mul r [% 02d], r [% 02d], r [% 02d]», rs, rt, rd)
6’h24: $ write («и r [% 02d], r [% 02d], r [% 02d]», rs, rt, rd)
6’h25: $ write («или r [% 02d], r [% 02d], r [% 02d]», rs, rt, rd)
6’h27: $ write («nor r [% 02d], r [% 02d], r [% 02d]», rs, rt, rd)
6’h2a: $ write («slt r [% 02d], r [% 02d], r [% 02d]», rs, rt, rd)
6’h00: $ write («sll r [% 02d],% 2d, r [% 02d]», rs, shamt, rd)
6’h02: $ write («srl r [% 02d], 0X% 02h, r [% 02d]», rs, shamt, rd)
6’h08: $ write («jr r [% 02d]», rs)
по умолчанию: $ write («»)
конец
конец

// Я печатаю

6’h08: $ write («addi r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h1d: $ write («muli r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h0c: $ write («andi r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h0d: $ write («ori r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h0f: $ write («lui r [% 02d], 0X% 04h», rt, немедленно)
6’h0a: $ write («slti r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h04: $ write («beq r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h05: $ write («bne r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h23: $ write («lw r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)
6’h2b: $ write («sw r [% 02d], r [% 02d], 0X% 04h», rs, rt, немедленно)

// J-тип

6’h02: $ write («jmp 0X% 07h», адрес)
6’h03: $ write («jal 0X% 07h», адрес)
6’h1b: $ write («толкать»)
6’h1c: $ write («поп»)
по умолчанию: $ write («»)
конец
$ write (« n»)
конец
конечная задача
конечный модуль

FAQs

1). Как работает блок управления?

Работа блока управления состоит в том, чтобы направлять поток данных или инструкций для выполнения процессором компьютера. Он контролирует, управляет и координирует основную память, ALU, регистры, блоки ввода и вывода. Он извлекает инструкции и генерирует управляющие сигналы для выполнения.

2). Что такое контрольная память?

Управляющая память обычно представляет собой RAM или ROM для хранения адреса и данных регистра управления.

3). Что такое блок управления Wilkes?

Последовательный и комбинационные схемы проводного блока управления заменяются блоком управления Wilkes. Он использует блок памяти для хранения последовательностей инструкций микропрограммы.

4). Что такое проводной блок управления?

Проводной блок управления генерирует управляющие сигналы, переходя из одного состояния в другое в каждом тактовом импульсе без каких-либо физических изменений в схеме. Генерация сигналов управления зависит от регистра инструкций, декодера и сигналов прерывания.

5). Что такое контрольная память?

Информация о блоке управления или данные временно или постоянно хранятся в управляющей памяти.
Управляющая память бывает двух типов. Это оперативная память (RAM) и постоянная память (ROM).

Таким образом, речь идет об определении, компонентах, дизайне, диаграмме, функциях и типы блока управления . Вот вам вопрос: «Какова цель регистра управляющих адресов?»