@{ /****************************************************************************** // MARECHAI: Master repository of computing history artifacts information // ---------------------------------------------------------------------------- // // Author(s) : Natalia Portillo // // --[ License ] -------------------------------------------------------------- // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // ---------------------------------------------------------------------------- // Copyright © 2003-2020 Natalia Portillo *******************************************************************************/ } @page "/admin/processors/details/{Id:int}" @page "/admin/processors/edit/{Id:int}" @page "/admin/processors/create" @using Marechai.Database.Models @inherits OwningComponentBase @inject IStringLocalizer L @inject CompaniesService CompaniesService @inject InstructionSetsService InstructionSetsService @inject NavigationManager NavigationManager @inject InstructionSetExtensionsByProcessorService InstructionSetExtensionsByProcessorService @inject InstructionSetExtensionsService InstructionSetExtensionsService @inject UserManager UserManager @inject AuthenticationStateProvider AuthenticationStateProvider @attribute [Authorize(Roles = "UberAdmin, Admin")]

@L["Processor details"]


@if(!_loaded) {

@L["Loading..."]

return; }
@if(_editing || _model.CompanyId != null) { @L["Company"] @if(_editing) { @L["Unknown (company)"] } @if(!_editing || !_unknownCompany) { } } @L["Name"] @L["Please enter a valid name."] @if(_editing || _model.ModelCode != null) { @L["Model code"] @if(_editing) { @L["Unknown (model code)"] } @if(!_editing || !_unknownModelCode) { @L["Please enter a valid model code."] } } @if(_editing || _model.Introduced.HasValue) { @L["Introduced"] @if(_editing) { @L["Unknown (introduction date)"] @L["Prototype"] } @if(!_editing || !_prototype && !_unknownIntroduced) { @L["Please enter an introduction date."] } } @if(_editing || _model.InstructionSetId != null) { @L["Instruction set"] @if(_editing) { @L["Unknown (instruction set)"] } @if(!_editing || !_unknownInstructionSet) { } } @if(_editing || _model.Speed.HasValue) { @L["Nominal speed (MHz)"] @if(_editing) { @L["Unknown (nominal speed)"] } @if(!_editing || !_unknownSpeed) { @L["Please enter a valid nominal speed."] } } @if(_editing || _model.Package != null) { @L["Package"] @if(_editing) { @L["Unknown (package)"] } @if(!_editing || !_unknownPackage) { @L["Please enter a valid package."] } } @if(_editing || _model.Gprs.HasValue) { @L["General Purpose Registers"] @if(_editing) { @L["Unknown (general purpose registers)"] } @if(!_editing || !_unknownGprs) { @L["Please enter a valid number of general purpose registers."] } } @if(_editing || _model.GprSize.HasValue) { @L["General Purpose Register size"] @if(_editing) { @L["Unknown (general purpose register size)"] } @if(!_editing || !_unknownGprSize) { @L["Please enter a valid general purpose register size."] } } @if(_editing || _model.Fprs.HasValue) { @L["Floating Point Registers"] @if(_editing) { @L["Unknown (floating point registers)"] } @if(!_editing || !_unknownFprs) { @L["Please enter a valid number of floating point registers."] } @if(_editing) { @L["If set to zero, but with a size, indicates floating point instructions use the general purpose registers."] } } @if(_editing || _model.FprSize.HasValue) { @L["Floating Point Register size"] @if(_editing) { @L["Unknown (floating point register size)"] } @if(!_editing || !_unknownFprSize) { @L["Please enter a valid floating point register size."] } } @if(_editing || _model.SimdRegisters.HasValue) { @L["SIMD Registers"] @if(_editing) { @L["Unknown (simd registers)"] } @if(!_editing || !_unknownSimdRegisters) { @L["Please enter a valid number of SIMD registers."] } @if(_editing) { @L["If set to zero, but with a size, indicates SIMD instructions use the floating point registers. If they are also set to zero with a size, it means SIMD instructions use the general purpose registers."] } } @if(_editing || _model.SimdSize.HasValue) { @L["SIMD Register size"] @if(_editing) { @L["Unknown (simd register size)"] } @if(!_editing || !_unknownSimdSize) { @L["Please enter a valid SIMD register size."] } } @if(_editing || _model.Cores.HasValue) { @L["Cores"] @if(_editing) { @L["Unknown (cores)"] } @if(!_editing || !_unknownCores) { @L["Please enter a valid number of cores."] } } @if(_editing || _model.ThreadsPerCore.HasValue) { @L["Threads per core"] @if(_editing) { @L["Unknown (threads per core)"] } @if(!_editing || !_unknownThreadsPerCore) { @L["Please enter a valid number of threads per core."] } } @if(_editing || _model.Process != null) { @L["Process"] @if(_editing) { @L["Unknown (process)"] } @if(!_editing || !_unknownProcess) { @L["Please enter a valid process."] } } @if(_editing || _model.ProcessNm.HasValue) { @L["Process (nm)"] @if(_editing) { @L["Unknown (process size)"] } @if(!_editing || !_unknownProcessNm) { @L["Please enter a valid process size in nanometers."] } } @if(_editing || _model.DieSize.HasValue) { @L["Die size (mm²)"] @if(_editing) { @L["Unknown (die size)"] } @if(!_editing || !_unknownDieSize) { @L["Please enter a valid die size in square millimeters."] } } @if(_editing || _model.Transistors.HasValue) { @L["Transistors"] @if(_editing) { @L["Unknown (transistors)"] } @if(!_editing || !_unknownTransistors) { @L["Please enter a valid number of transistors."] } } @if(_editing || _model.DataBus.HasValue) { @L["Data bus size"] @if(_editing) { @L["Unknown (data bus size)"] } @if(!_editing || !_unknownDataBus) { @L["Please enter a valid data bus size in bits."] } } @if(_editing || _model.AddrBus.HasValue) { @L["Address bus size"] @if(_editing) { @L["Unknown (address bus size)"] } @if(!_editing || !_unknownAddressBus) { @L["Please enter a valid address bus size in bits."] } } @if(_editing || _model.L1Instruction.HasValue) { @L["L1 instruction cache (KiB)"] @if(_editing) { @L["Unknown (L1 instruction cache)"] } @if(!_editing || !_unknownL1Instruction) { @L["Please enter a valid L1 instruction cache size in kibibytes."] } } @if(_editing || _model.L1Data.HasValue) { @L["L1 data cache (KiB)"] @if(_editing) { @L["Unknown (L1 data cache)"] } @if(!_editing || !_unknownL1Data) { @L["Please enter a valid L1 data cache size in kibibytes."] } } @if(_editing || _model.L2.HasValue) { @L["L2 cache (KiB)"] @if(_editing) { @L["Unknown (L2 cache)"] } @if(!_editing || !_unknownL2) { @L["Please enter a valid L2 cache size in kibibytes."] } } @if(_editing || _model.L3.HasValue) { @L["L3 cache (KiB)"] @if(_editing) { @L["Unknown (L3 cache)"] } @if(!_editing || !_unknownL3) { @L["Please enter a valid L3 cache size in kibibytes."] } }
@if(!_editing) { } else { } @L["Back to list"]
@if(!_editing) {

@L["Instruction set extensions implemented by this processor"]

@if(_addingExtension) {
@L["Instruction set extensions"]
} @if(_processorExtensions?.Count > 0) {
@foreach(var item in _processorExtensions) { }
@L["Name"]
@item.Extension
} @_deleteTitle @_deleteText }