There are several new features in Blackfin+ core. Some of the Key features which greatly improve performance over existing Blackfin is listed below
- Posted system MMR writes
The Blackfin+ core supports posted MMR writes.This feature can be enabled by setting MPWEN bit in SYSCFG register.
When Posted MMR write is enabled,
- Core does not wait for a system MMR write to complete before starting another system MMR write.
- The core does not ensure writes complete in correct order. But system infrastructure will ensure that these writes will complete in the correct order.
- Core waits for all system MMR writes to complete before issuing a system MMR read. So loads from system MMRs may take longer.
2. Dynamic Branch prediction
The Blackfin+ core supports dynamic branch prediction. BPEN bit in the SYSCFG register enables the Dynamic Branch prediction. When dynamic Branch prediction is not enabled Static branch prediction is used for predicting branches.
3.16-bit complex multiplication
The Blackfin+ core has new instructions which support 16 bit complex multiplications. The instructions support multiplication of A * B , A * B’ and A’ * B’ . Where A and B are complex numbers and A’ and B’ are complex conjugate of respective complex numbers. These instructions greatly improve performance of algorithms which involves complex multiplications.
4. Single Cycle *= Multiplication
*= instruction takes single cycle to complete in Blackfin+ core.
5. 32 bit multiplication
New 32 * 32 = 64 bit multiplication instructions which support optional saturation and rounding are available.
6. Add with carry and Sub with borrow
New Add with carry and Subtract with borrow with optional saturation instructions are available.
7. Shift instructions
New Assembly Syntax for Arithmetic right shift with saturation and Arithmetic Left shift are added into new Blackfin+ core
REG = REG <<< IMM
REG = REG >>> IMM (s)
8. Not cc to Data register
A new instruction which enables copying !CC value to Data Register is added.
This instruction leads to small improvements in compiler generated code as it directly provides a way to copy the inverse of CC value to Data register.
9.Load immediate 32
In Blackfin+ core ,the immediate 32 bit value can be loaded into Data registers(R register),Pointer registers( P registers, SP,FP), Index registers(I registers), Modify registers(M register),Length registers(L registers) and Base registers(B registers)
10 .Absolute address Load/Stores
Load and store from absolute 32 bit address is supported in the core.
11. Jump/Call to immediate 32
The older Blackfin core allows only 25 bit PC relative address, but in the Blackfin+ core ,Jump and Call can use immediate 32 bit value for PC relative address.
12. P addressed Load/Store in DAG slot 2
In Parallel instructions, The restriction that if the two 16-bit instructions are memory access instructions only one can use the P-registers as an address register is removed.
13. TESTSET instruction
In Blackfin+ core, TESTSET instruction can be addressed to any memory byte. These are not cache inhibited access. TESTSET to cacheable memory region checks cache and update the data in cache.
14. Scratchpad Memory is same as other L1 data memory
Blackfin+ core allows DAG and DMA access to scratchpad memory. Hence Scratchpad memory is available to user just as other L1 Data banks.