Skip to content

maxmiller/projetopsc

Repository files navigation

Repósitorio do projeto da disciplina de Projeto de Sistemas em CHIP

6 de junho

Pessoal vamos padronizar de fazer os códigos em ingles (Nomes de classes, Métodos e Variáveis), porém os 
commits e comentários podemos fazer em portugues

7 de junho

Implementamos as seguintes instruções no formato 16 bits type(2), op(5), dest(3), src1(3), src2(3), ou 32 bits type(2), op(5), dest(3), src1(3), src2(3), Address(16) como é mostrado no livro do gajiski pg 403.

7 de junho

- Adicionando correções necessárias para compilação
- Para compilar os códigos configure as variáveis LDFLAGS e INCLUDES do Makefile de acordo com a localização das libs e includes do systemc em seu ambiente.
- Após a configuração digite "make"

9 de junho

-Intruçoes Implementadas
tipo 1 Operação de Registradores
type(2), Op(5), dest(3), src1(3), scr2(3)
Op = 0 => RF [dest] = RF[src1] + RF[src2]
Op = 1 => RF [dest] = RF[src1] x RF[src2]
Op = 2 => RF [dest] = RF[src1] and RF(src2]
Op = 3 => RF [dest] = RF[src1] + 1
Op = 4 => RF [dest] = RF[src1]

Op(5), dest(3), src1(3), scr2(3), constante(16)
Op = 5 => RF [des] = constante

tipo 2 Operação de Memória
type(2), Op(5), dest(3), src1(3), scr2(3), endereço(16)
Op = 0 => RF [dest] = endereço
Op = 1 => RF [dest] = Mem[endereço]
Op = 2 => RF [dest] = Mem[Mem[endereço]]
Op = 3 => Mem [endereço] = RF[src1]
Op = 4 => Mem [Mem[endereço]] = RF[scr1]


tipo 3 Operação de controle de fluxo
type(2), Op(5), dest(3), src1(3), scr2(3), endereço(16)
Op = 0 => PC = endereço
Op = 1 => se statusBit PC = endereço senão PC = PC + 1

tipo 4 Operação de micelania
Op = 5 => statusBit = 1 se RF[src1] > RF[src2]
Op = 6 => statusBit = 1 se RF[src1] < RF[src2]
Op = 7 => statusBit = 1 se RF[src1] == RF[src2]
Op = 8 => statusBit = 1 se RF[src1] == 0

12 de junho

Agora o repositório está mais organizado, adicionei makefiles para os arquivos, porém só devem funcionar no linux


TODO
gerar um diagrama do processador no simulink

13 de junho

vamos precisar de um gerador de CDFG de alguma forma

9 de julho

termidado o gerador de código automátio para a unidade de controle customizável

atualmente estamos usando o pipe disponível em: http://pipe2.sourceforge.net/
para gerar redes de petri que são interpretadas como máquinas de estado para nossa solução atual

uma vez gerada a rede de petri para uma determinada instrução é necessário salvar o arquivo da rede em algum local. 
Para usar usar o gerador de código da unidade de controle faça
python customizableControllUnitGenerator.py <diretorioOndeEstaoAsModelagens>

para uma dada instrução com o formato type(2), Op(5), dest(3), src1(3), scr2(3)

o arquivo relativo aquela instrução pode ter dois nomes:
type_op.xml => referindo-se a instrução com type = <type> e op = <op>
type_all.xml => referindose-se a uma instrução com type = <type> sem que importem os valores de op (por exemplo instruções RF[src1] op RF[src2])

a rede de petri deve ser modelada com a seguinte estrutura:
Lugares: serão os estados de nossa máquina de estados
Nomes dos lugares => microInstruções que devem ser realizadas pela unidade de controle nesse estado
ex:
P0 = rfSel dest loadsARWithPc
P1 = resetAllLoads
P2 = incrementPC
P3 = resetAllLoads
P4 = ulaOp 5 ulaInAMuxSel 1 loadRA 1
P5 = wait 1

Transições: as transições não fazem diferença para nós, sua semântica apenas significa a ligação entre um estado e seu proximo.

Valores dos lugares: Um lugar com valor inicial igual a 1 deve ser setado indicando que ele é o estado inicial da máquina de estados.

Para testes estamos usando o processador anteriormente gerado, atualmente apenas uma instrução foi modelada

RF [des] = constante

15 de julho

Gerador de código finalizado, para rodar o gerador rodar o script
 generator.sh onde será executado oscript python, e posteriormente o script ruby.
Depois podemos criar uma make para rodar o gerador.
Data de Entrega do processador:
sexta, dia 18 de junho

Data de Entrega do trabalho final:

28 de outubro

primeiros esforços a respeito do pipeline

opção 1: Criação de uma máquina de estado chamada pipeline control que executa em paralelo com a unidade
de controle


13 de novembro

Instruções da unidade de controle com pipeline

-Intruçoes Implementadas
tipo 1 Operação de Registradores
type(2), Op(5), dest(3), src1(3), scr2(3)
Op = 0 => RF [dest] = RF[src1] + RF[src2]
Op = 1 => RF [dest] = RF[src1] x RF[src2]
Op = 2 => RF [dest] = RF[src1] and RF(src2]
Op = 3 => RF [dest] = RF[src1] + 1
Op = 4 => RF [dest] = RF[src1] + src2

ADD
ADDI
AND
ANDI
BEQZ
J
LW
OR
ORI
SUB
SUBI
SW
XOR
XORI


tipo 2 Operação de Memória
type(2), Op(5), dest(3), src1(3), scr2(3)
Op = 0 => RF [dest] = Mem[RF[scr1] + src2]
Op = 1 => Mem[RF[dest]] = RF[scr1]

http://www.csee.umbc.edu/courses/undergraduate/411/spring96/dlx.html

About

Projeto de Sistemas em CHIP

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published