KR102407917B1 - 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법 - Google Patents

멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법 Download PDF

Info

Publication number
KR102407917B1
KR102407917B1 KR1020150158904A KR20150158904A KR102407917B1 KR 102407917 B1 KR102407917 B1 KR 102407917B1 KR 1020150158904 A KR1020150158904 A KR 1020150158904A KR 20150158904 A KR20150158904 A KR 20150158904A KR 102407917 B1 KR102407917 B1 KR 102407917B1
Authority
KR
South Korea
Prior art keywords
processor
data
memory
shared memory
allocation area
Prior art date
Application number
KR1020150158904A
Other languages
English (en)
Other versions
KR20170055748A (ko
Inventor
윤지용
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150158904A priority Critical patent/KR102407917B1/ko
Priority to DE102016121152.4A priority patent/DE102016121152A1/de
Priority to US15/344,881 priority patent/US10185673B2/en
Priority to TW105136177A priority patent/TWI767893B/zh
Priority to JP2016219683A priority patent/JP7042552B2/ja
Priority to CN201611005736.3A priority patent/CN107015940B/zh
Publication of KR20170055748A publication Critical patent/KR20170055748A/ko
Priority to US16/213,233 priority patent/US10482042B2/en
Priority to US16/659,791 priority patent/US10949364B2/en
Application granted granted Critical
Publication of KR102407917B1 publication Critical patent/KR102407917B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법이 개시된다. 본 발명의 멀티 프로세서 시스템은 제1 프로세서, 제2 프로세서, 상기 제1 및 제2 프로세서에 의해 공통으로 사용되는 공유 메모리, 및 상기 공유 메모리와 상기 제1 및 제2 프로세서 간의 인터페이스를 수행하는 메모리 인터페이스 회로를 포함한다. 상기 제1 프로세서는 무선 통신으로 수신된 신호를 복조(demodulation)하고 디코딩(decoding)하여, 디코딩된 데이터를 상기 메모리 인터페이스 회로를 통해 상기 공유 메모리에 저장하고, 상기 메모리 인터페이스 회로는 상기 공유 메모리에 저장된 상기 디코딩된 데이터를 독출하고 해독(deciphering)하여, 해독된 데이터를 상기 공유 메모리에 저장한다.

Description

멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법{Multi-Processor System Including Memory Shared By Multi-Processor And Method there-of}
본 발명의 개념에 따른 실시 예는 하나 이상의 프로세서를 포함하는 시스템 및 그 시스템의 동작 방법에 관한 것으로, 보다 상세하게는 이종 프로세서를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법에 관한 것이다.
종래의 모바일 기기(예컨대, 스마트폰, 태블릿 PC 등)에서는 어플리케이션 프로세서(AP: Application processor)와, 커넥티비티 프로세서(CP: connectivity processor)는 별도의 칩으로 구현되고, 양 프로세서는 칩-투-칩(chip-to-chip) 인터페이스로 연결된다. AP는 모바일 기기의 OS 및 각종 응용 프로그램을 구동하는 모바일 기기의 메인 칩이다. CP는 모바일 기기를 외부 장치와 연결하는 기능을 담당하며, 통신 칩이라 칭해지기도 한다.
따라서, 종래에는 CP와 AP가 각각 독립된 시스템으로서 별개로 동작하고, 칩-투-칩(chip-to-chip) 인터페이스를 통해 데이터를 주고 받았다.
최근에는 AP와 CP가 하나의 시스템-온-칩(SoC; System-on-Chip)으로 합쳐서 구현하는 방식이 제안되고 있다.
본 발명이 이루고자 하는 기술적인 과제는 멀티 프로세서 시스템에서 메모리 억세스 빈도를 줄여 파워 소모를 줄이고 시스템 성능을 개선할 수 있는 동작 방법 및 그 시스템을 제공하는 것이다.
본 발명의 실시예에 따르면, 제1 프로세서; 제2 프로세서; 상기 제1 및 제2 프로세서에 의해 공통으로 사용되는 공유 메모리; 및 상기 공유 메모리와 상기 제1 및 제2 프로세서 간의 인터페이스를 수행하는 메모리 인터페이스 회로를 포함하며, 상기 제1 프로세서는 무선 통신으로 수신된 신호를 복조(demodulation)하고 디코딩(decoding)하여, 디코딩된 데이터를 상기 메모리 인터페이스 회로를 통해 상기 공유 메모리에 저장하고, 상기 메모리 인터페이스 회로는 상기 공유 메모리에 저장된 상기 디코딩된 데이터를 독출하고 해독(deciphering)하여, 해독된 데이터를 상기 공유 메모리에 저장하는 멀티 프로세서 시스템이 제공된다.
상기 공유 메모리는 상기 제1 프로세서용 할당 영역 및 상기 제2 프로세서용 할당 영역을 포함하고, 상기 디코딩된 데이터는 상기 제1 프로세서용 할당 영역에 저장되며, 상기 해독된 데이터는 상기 제2 프로세서용 할당 영역에 저장될 수 있다.
상기 메모리 인터페이스 회로는, 제1 프로세서의 제1 DMA로부터 제1 메모리 접근 요청 및 상기 제2 프로세서의 제2 DMA로부터의 제2 메모리 접근 요청에 따라 공유 메모리를 억세스하는 메모리 컨트롤러; 및 상기 제1 메모리 접근 요청 및 상기 제2 메모리 접근 요청을 수신하여 상기 메모리 컨트롤러로 전달하는 로컬 버스를 포함할 수 있다.
상기 메모리 컨트롤러는 로컬 DMA; 및 상기 로컬 DMA로 상기 제1 프로세서용 할당 영역에 저장된 상기 디코딩된 데이터의 독출을 요청하고, 상기 로컬 DMA를 통해 수신한 상기 디코딩된 데이터를 해독하는 암호 해독 모듈을 포함할 수 있다.
상기 로컬 DMA는 상기 암호 해독 모듈의 요청에 따라, 상기 제1 프로세서용 할당 영역에 저장된 상기 디코딩된 데이터를 독출하여 상기 암호 해독 모듈로 제공할 수 있다.
상기 로컬 DMA은 상기 제1 프로세서용 할당 영역에 저장된 제1 어드레스 디스크립터를 참조하여 상기 디코딩된 데이터를 독출하며, 상기 제1 어드레스 디스크립터는 상기 디코딩된 데이터의 어드레스 정보를 포함하고, 상기 제1 프로세서에 의해 생성되어 상기 제1 프로세서용 할당 영역에 저장될 수 있다.
상기 로컬 DMA는 상기 암호 해독 모듈의 요청에 따라, 상기 제2 프로세서용 할당 영역에 기 저장된 제2 어드레스 디스크립터를 참조하여, 상기 해독된 데이터를 상기 제2 프로세서용 할당 영역에 저장하며, 상기 제2 어드레스 디스크립터는 상기 해독된 데이터의 어드레스 정보를 포함하고, 상기 제2 프로세서에 의해 생성되어 상기 제2 프로세서용 할당 영역에 저장될 수 있다.
상기 로컬 DMA는 상기 해독된 데이터를 상기 제2 프로세서용 할당 영역에 저장한 후 메일 박스에 저장 완료를 알려 주고, 상기 메일 박스는 상기 제2 프로세서로 인터럽트를 발생할 수 있다.
상기 제2 프로세서는 상기 메일 박스의 상기 인터럽트에 응답하여, 상기 메모리 인터페이스 회로로 상기 해독된 데이터를 요청하고, 상기 메모리 인터페이스 회로로부터 상기 해독된 데이터를 수신하여 처리할 수 있다.
상기 메모리 인터페이스 회로는 상기 공유 메모리에 저장된 데이터의 일부를 저장하며, 상기 공유 메모리에 억세스하기 전에 먼저 억세스하는 시스템 캐시를 더 포함할 수 있다.
상기 메모리 인터페이스 회로는 상기 디코딩된 데이터를 해독(deciphering)하여, 해독된 데이터를 생성하는 암호 해독 모듈; 및 상기 로컬 버스에 연결되고, 상기 암호 해독 모듈의 요청에 따라 상기 로컬 버스로 상기 해독된 데이터를 요청하는 로컬 DMA을 포함하며, 상기 로컬 버스는 상기 로컬 DMA의 상기 해독된 데이터에 대한 요청 신호를 상기 메모리 컨트롤러로 전달할 수 있다.
본 발명의 실시예에 따르면, 제1 프로세서, 및 제2 프로세서를 포함하는 멀티 프로세서 시스템의 동작 방법이 제공된다. 상기 멀티 프로세서 시스템의 동작 방법은 상기 제1 프로세서가 무선 통신을 통해 데이터를 수신하고, 상기 데이터에 기초하여 제1 패킷 데이터(IP packet)를 생성하는 단계; 상기 제1 프로세서가 공유 메모리의 제1 프로세서용 할당 영역에 상기 제1 패킷 데이터를 저장하는 단계; 상기 메모리 인터페이스 회로가 상기 제1 프로세서용 할당 영역으로부터 상기 제1 패킷 데이터를 독출하고, 상기 제1 패킷 데이터를 해독(deciphering)하여 해독된 데이터를 생성하는 단계; 상기 메모리 인터페이스 회로가 상기 공유 메모리의 제2 프로세서용 할당 영역에 상기 해독된 데이터를 저장하는 단계; 및 상기 제2 프로세서가 상기 제2 프로세서용 할당 영역에서 상기 해독된 데이터를 독출하여 처리하는 단계를 포함한다.
상기 방법은 상기 제1 패킷 데이터를 저장하는 단계 이전에, 상기 제1 프로세서가 제1 어드레스 디스크립터를 생성하여 상기 공유 메모리의 제1 프로세서용 할당 영역에 저장하는 단계; 및 상기 해독된 데이터를 저장하는 단계 이전에, 상기 제2 프로세서가 제2 어드레스 디스크립터를 생성하여 상기 공유 메모리의 제2 프로세서용 할당 영역에 저장하는 단계를 더 포함할 수 있다.
상기 제1 어드레스 디스크립터는 상기 제1 패킷 데이터의 저장 위치를 지정하기 위한 어드레스 정보를 포함하고, 상기 제2 어드레스 디스크립터는 상기 해독된 데이터의 저장 위치를 지정하기 위한 어드레스 정보를 포함할 수 있다.
상기 제1 패킷 데이터를 독출하여, 해독(deciphering)하는 단계는 상기 메모리 인터페이스 회로 내의 로컬 DMA가 상기 제1 어드레스 디스크립터를 참조하여 상기 제1 프로세서용 할당 영역으로부터 상기 패킷 데이터를 독출하는 단계; 및 상기 메모리 인터페이스 회로 내의 암호 해독 모듈이 상기 독출된 상기 패킷 데이터를 해독(deciphering)하는 단계를 포함할 수 있다.
상기 해독된 데이터를 저장하는 단계는 상기 로컬 DMA가 상기 제2 어드레스 디스크립터를 참조하여 상기 해독된 데이터를 상기 제2 프로세서용 할당 영역에 저장하는 단계를 포함할 수 있다.
상기 방법은 상기 메모리 인터페이스 회로가 상기 해독된 데이터를 상기 제2 프로세서용 할당 영역에 저장한 후 메일 박스에 저장 완료를 알려 주는 단계; 및 상기 메일 박스가 상기 제2 프로세서로 인터럽트를 발생하는 단계를 더 포함할 수 있다.
상기 방법은 상기 제2 프로세서가 제2 패킷 데이터(IP packet)를 생성하여, 상기 공유 메모리의 제2 프로세서용 할당 영역에 상기 제2 패킷 데이터를 저장하는 단계; 상기 메모리 인터페이스 회로가 상기 제2 프로세서용 할당 영역으로부터 상기 제2 패킷 데이터를 독출하여, 암호화(ciphering)하는 단계; 상기 메모리 인터페이스 회로가 상기 공유 메모리의 제1 프로세서용 할당 영역에 상기 암호화된 데이터를 저장하는 단계; 상기 제1 프로세서가 상기 제1 프로세서용 할당 영역에 저장된 상기 암호화된 데이터를 독출하는 단계; 및 상기 제2 프로세서가 상기 암호화된 데이터를 무선 통신 통해 전송하기 위한 무선 데이터로 변환하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따르면, 제1 프로세서; 제2 프로세서; 및 상기 제1 및 제2 프로세서에 의해 공통으로 사용되는 공유 메모리와 상기 제1 및 제2 프로세서 간의 인터페이스를 수행하는 메모리 인터페이스 회로를 포함하며, 상기 제1 프로세서는 무선 통신으로 수신된 신호를 복조(demodulation)하고 디코딩(decoding)하여, 디코딩된 데이터를 상기 메모리 인터페이스 회로를 통해 상기 공유 메모리에 저장하고, 상기 메모리 인터페이스 회로는 상기 공유 메모리에 저장된 상기 디코딩된 데이터를 독출하고 해독(deciphering)하여, 해독된 데이터를 상기 공유 메모리에 저장하는 시스템 온 칩(SOC)이 제공된다.
본 발명의 실시예에 따르면, 둘 이상의 프로세서가 하나의 메모리를 공유하는 시스템에서, 메모리 인터페이스 회로 내에 로컬 DMA 및 암호 해독 모듈을 내장함으로써, 하나의 프로세서에서 다른 프로세서로 데이터 전달시 프로세서의 버스를 거치지 않고, 메모리 인터페이스 회로만을 거처 내부적으로 전달된다. 따라서, 프로세서간 데이터 전송시, 공유 메모리를 억세스하는 횟수를 줄일 수 있다. 이에 따라, 멀티 프로세서 시스템의 성능(예컨대, 속도 등)이 향상되고, 전력 소모는 줄어들 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 멀티 프로세서 시스템을 간략히 나타내는 도면이다.
도 2는 도 1에 도시된 공유 메모리의 일 실시예를 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 멀티 프로세서 시스템을 보다 자세히 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 멀티 프로세서 시스템을 보다 자세히 나타내는 도면이다.
도 5는 도 3에 도시된 메모리 인터페이스 회로의 변형예를 나타내는 블록도이다.
도 6은 도 4에 도시된 메모리 인터페이스 회로의 변형예를 나타내는 블록도이다.
도 7은 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 나타내는 플로우차트이다.
도 8은 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 나타내는 플로우차트이다.
도 10은 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 설명하기 위한 도면이다.
도 11은 본 발명의 다른 실시 예에 따른 전자 시스템의 구성 블록도이다.
도 12는 본 발명의 실시예에 따른 모바일 기기를 간략히 나타내는 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시예에 따른 멀티 프로세서 시스템을 간략히 나타내는 도면이다. 도 1을 참조하면, 멀티 프로세서 시스템(10)은 시스템 온 칩(SOC: system-on-chip)(100) 및 공유 메모리(300)를 포함한다.
시스템 온 칩(100)은 제1 프로세서(110), 제2 프로세서(130) 및 공유 메모리 인터페이스 회로(common memory interface (200)를 포함한다.
제1 및 제2 프로세서(110, 130) 각각은 공유 메모리 인터페이스 회로(200)를 통해 공유 메모리(300)에 억세스할 수 있다. 즉, 메모리 인터페이스 회로(200)는 공유 메모리(300)와 상기 제1 및 제2 프로세서(110, 130) 간의 인터페이스를 수행할 수 있다. 제1 및 제2 프로세서(110, 130) 각각은 하나 이상의 프로세싱 유닛을 포함할 수 있다.
공유 메모리(300)는 제1 및 제2 프로세서(110, 130)에 의해 공통으로 사용되는 메인 메모리이다. 공유 메모리(300)는 DRAM(Dynamic random-access memory)일 수 있으나, 이에 한정되는 것은 아니다. 예컨대, 공유 메모리(300)는 비휘발성 메모리로 구현될 수도 있다.
제1 프로세서(110) 또는 제2 프로세서(130)는 메모리 인터페이스 회로(200)로 메모리 억세스 요청, 즉, 데이터 저장(쓰기) 요청이나 읽기 요청을 할 수 있다. 예컨대, 제1 프로세서(110) 또는 제2 프로세서(130)는 각각의 DMA(Direct Memory Access) 유닛(116, 134)을 이용하여 메모리 인터페이스 회로(200)와 데이터를 전송할 수 있다.
제1 버스(140)는 제1 프로세서(110)와 메모리 인터페이스 회로(200) 사이에서, 제1 프로세서(110)와 메모리 인터페이스 회로(200) 간의 데이터 전송을 지원할 수 있다.
제2 버스(150)는 제2 프로세서(130)와 메모리 인터페이스 회로(200) 사이에서, 제2 프로세서(130)와 메모리 인터페이스 회로(200) 간의 데이터 전송을 지원할 수 있다.
실시예에 따라, 제1 및 제2 버스(140, 150)는 각각 AMBA(Advanced Microcontroller Bus Architecture) 또는 AXI(Advanced eXtensible Interface) 규격에 따른 버스일 수 있으나, 이에 한정되는 것은 아니며, 다른 인터커넥트(Interconnect Specification)에 따른 버스일 수도 있다.
제1 프로세서(110)는 무선 통신으로 수신된 신호를 복조(demodulation)하고 디코딩(decoding)하여, 디코딩된 데이터를 메모리 인터페이스 회로(200)를 통해 공유 메모리(300)에 저장할 수 있다. 디코딩된 데이터는 암호화된 데이터일 수 있다. 실시예에 따라, 제1 프로세서(110)는 디코딩된 데이터를 포함하는 미리 정해진 포맷의 패킷 데이터(예컨대, 인터넷 프로토콜(IP: Internet Protocol) 패킷 데이터)를 생성할 수 있다. 이 경우, 디코딩 데이터를 포함하는 패킷 데이터가 공유 메모리(300)에 저장될 수 있다.
메모리 인터페이스 회로(200)는 공유 메모리(300)에 저장된 디코딩된 데이터를 독출하고 해독(deciphering)하여, 해독된 데이터를 공유 메모리(300)에 저장한다.
이를 위하여, 메모리 인터페이스 회로(200)는 디코딩된 데이터를 해독하기 위한 암호 해독 유닛(Cipher/Decipher unit)을 포함한다.
메모리 인터페이스 회로(200)에 의하여, 해독된 데이터가 공유 메모리(300)에 저장된 후에, 제2 프로세서(130)는 공유 메모리(300)로부터 해독된 데이터를 독출하여 처리한다.
도 2는 도 1에 도시된 공유 메모리의 일 실시예(300a)를 설명하기 위한 도면이다. 도 1 및 도 2를 참조하면, 공유 메모리(300a)는 복수(2 이상의) 영역으로 나뉘어질 수 있다. 실시예에 따라, 공유 메모리(300a)는 제1 프로세서용 할당 영역(310)과 제2 프로세서용 할당 영역(320), 및 기타 영역(330)으로 나뉘어질 수 있다.
제1 프로세서용 할당 영역(310)은 펌웨어 영역(311), 어드레스 디스크립터 영역(311) 및 패킷 데이터 영역(315)을 포함할 수 있다.
펌웨어 영역(311)은 제1 프로세서(110)의 펌웨어(firmware)를 저장하는 영역이다. 어드레스 디스크립터 영역(311)은 제1 프로세서(110)가 생성한 어드레스 디스크립터를 저장하기 위한 영역일 수 있다. 제1 프로세서(110)가 생성한 어드레스 디스크립터는 제1 프로세서(110)가 사용(저장 또는 독출)할 데이터의 저장 위치를 지정하는 어드레스 정보를 포함할 수 있다.
패킷 데이터 영역(315)은 제1 프로세서(110)용 데이터를 저장하기 위한 영역이다. 예컨대, 제1 프로세서(110)에서 생성된 패킷 데이터 또는 제1 프로세서(110)가 독출할 패킷 데이터가 패킷 데이터 영역(315)에 저장될 수 있다.
상술한 제1 프로세서(110)에서 디코딩된 데이터는, 어드레스 디스크립터 영역(311)에 저장된 어드레스 디스크립터에 따라 패킷 데이터 영역(315)에 저장될 수 있다.
제2 프로세서용 할당 영역(320)은 TCP/IP 데이터 영역(321) 및 어드레스 디스크립터 영역(325)을 포함할 수 있다.
TCP/IP 데이터 영역(321)은 제2 프로세서(130)용 데이터를 저장하기 위한 영역이다. 예컨대, 제2 프로세서(130)에서 생성된 패킷 데이터 또는 제2 프로세서(130)가 독출할 패킷 데이터가 TCP/IP 데이터 영역(321)에 저장될 수 있다.
TCP/IP 데이터 영역(321)은 소켓 버퍼(socket buffer, 323)를 포함할 수 있다.
어드레스 디스크립터 영역(325)은 제2 프로세서(130)가 생성한 어드레스 디스크립터를 저장하기 위한 영역일 수 있다. 제2 프로세서(130)가 생성한 어드레스 디스크립터는 제2 프로세서(130)가 사용(저장 또는 독출)할 데이터의 저장 위치를 지정하는 어드레스 정보를 포함할 수 있다.
상술한 메모리 인터페이스 회로(200)에서 해독된 데이터는, 어드레스 디스크립터 영역(325)에 저장된 어드레스 디스크립터에 따라 소켓 버퍼(323)에 저장될 수 있다.
도 3은 본 발명의 실시예에 따른 멀티 프로세서 시스템을 보다 자세히 나타내는 도면이다. 도 3을 참조하면, 멀티 프로세서 시스템(10a)은 시스템 온 칩(SOC)(100a) 및 공유 메모리(300)를 포함한다.
시스템 온 칩(100a)은 CP SOC(101), AP SOC(103) 및 메모리 인터페이스 회로(200)를 포함한다.
CP SOC(101)는 모뎀 프로세서(110a), CPU(central processing unit)(122), DSP(Digital Signal Processor)(124) 및 제1 버스(140)를 포함할 수 있다.
CPU(122)는 CP SOC(101)의 전반적인 동작을 제어한다.
모뎀 프로세서(110a)는 변복조기(Modem Rx/Tx)(112), 인코더/디코더(114) 및 제1 DMA 유닛(116)을 포함할 수 있다. 모뎀 프로세서(110a)는 도 1의 제1 프로세서(110)에 해당할 수 있다. 도 2에 도시된 바와 같이, 모뎀 프로세서(110a)는 다른 프로세서 및/또는 소자와 함께 하나의 SOC(즉, CP SOC(101))로 구현될 수 있으나, 이에 한정되는 것은 아니다.
변복조기(112)는 무선 통신을 통해 수신한 데이터(예컨대, 다운링크 데이터)를 복조하고, 또한, 무선 통신을 통해 송신할 데이터(예컨대, 업링크 데이터)를 변조할 수 있다.
여기서, 다운링크 데이터(Downlink data)란 이동통신 기지국으로부터 모바일 기기로 전송되어 처리되는 데이터를 포괄적으로 의미할 수 있고, 업링크 데이터(Uplink data)란 모바일 기기에서 생성되어 이동통신 기지국으로 전송되는 데이터를 포괄적으로 의미할 수 있다.
본 발명의 실시예에 따른 멀티 프로세서 시스템(10, 10a, 10b)은 이동통신용 모바일 기기에 적용될 수 있다. 변복조기의 변복조 방식은 무선 통신 프로토콜에 따라 달라질 수 있다.
다운링크 데이터의 경우, 인코더/디코더(114)는 변복조기(112)에 의해 복조된 데이터를 수신하여 디코딩하고, 업링크 데이터의 경우, 인코더/디코더(114)는 데이터 인코딩을 수행하여 인코딩된 데이터를 변복조기(114)로 제공할 수 있다. 이 경우, 변복조기(112)는 인코딩된 데이터를 무선 통신을 통해 전송하기 위한 무선 데이터로 변조할 수 있다.
실시예에 따라, 인코딩된 데이터는 메모리 인터페이스 회로(200a)에서 암호화된 데이터일 수 있다. 따라서, 모뎀 프로세서(110a)는 암호화된 데이터를 무선 통신을 통해 전송하기 위한 무선 데이터로 변환할 수 있다.
DSP(132)는 디지털 신호에 대한 각종 처리(processing)를 수행할 수 있다.
예컨대, DSP(132)는 이미지 센서(미도시)로부터 입력된 이미지 데이터를 처리할 수 있다.
제1 버스(140)는 CP SOC(101) 내의 소자들간 통신 및 CP SOC(101)와 외부 소자 간의 통신을 지원한다.
메모리 인터페이스 회로(200a)는 로컬 버스(210a), 및 메모리 컨트롤러를 포함할 수 있다.
로컬 버스(210a)는 제1 버스(140) 및 제2 버스(150)에 연결될 수 있다.
예컨대, 로컬 버스(210a)는 제1 버스(140)와 함께, 제1 프로세서(110)와 메모리 컨트롤러(220a) 간의 데이터 전송을 지원하고, 또한 제2 버스(150)와 함께, 제2 프로세서(130)와 메모리 컨트롤러(220a) 간의 데이터 전송을 지원할 수 있다.
메모리 컨트롤러(220a)는 로컬 DMA(230a), 암호 해독 모듈(240a), 독출 버퍼(251) 및 쓰기 버퍼(253)를 포함할 수 있다.
메모리 컨트롤러(220a)는 제1 DMA로부터 제1 버스(140) 및 로컬 버스(210a)를 통해 디코딩된 데이터를 수신하여 쓰기 버퍼(253)에 일시적으로 저장할 수 있다. 메모리 컨트롤러(220a)는 쓰기 버퍼(253)에 저장된 디코딩된 데이터를 공유 메모리(300)에 저장할 수 있다.
예컨대, 메모리 컨트롤러(220a)는 디코딩된 데이터를 공유 메모리(300)의 제1 프로세서용 할당 영역(310)의 패킷 데이터 영역(315)에 저장할 수 있다.
쓰기 버퍼(253)는 공유 메모리(300)에 저장할 데이터를 일시적으로 저장하는 버퍼이다.
암호 해독 모듈(240a)은 로컬 DMA(230a)로 공유 메모리(300)에 저장된 디코딩된 데이터의 독출을 요청할 수 있다. 상기 요청에 따라, 로컬 DMA 유닛(230a)은 공유 메모리(300)로부터 디코딩된 데이터를 독출하여 암호 해독 모듈(240a)로 제공한다. 실시예에 따라, 로컬 DMA 유닛(230a)은 제1 어드레스 디스크립터를 참조하여, 디코딩된 데이터의 어드레스 정보를 알아내고, 상기 어드레스 정보에 따라 상기 디코딩된 데이터를 독출할 수 있다.
제1 어드레스 디스크립터를 참조하기 위한 정보는 제1 프로세서(110)로부터 발급되는 명령에 포함될 수 있다. 예컨대, 제1 프로세서(110)는 제1 어드레스 디스크립터 참조 정보를 포함하는 명령을 로컬 DMA 유닛(230a)으로 발급할 수 있다. 또는 제1 프로세서(110)는 제1 어드레스 디스크립터 참조 정보를 로컬 DMA 유닛(230a) 내의 레지스터(예컨대, SFR: special function register)(미도시)에 설정할 수 있다.
공유 메모리(300)로부터 독출된 디코딩된 데이터는 읽기 버퍼(251)에 일시적으로 저장될 수 있다.
읽기 버퍼(253)는 공유 메모리(300)로부터 독출한 데이터를 일시적으로 저장하는 버퍼이다.
암호 해독 모듈(240a)은 로컬 DMA(230a)를 통해 수신한 디코딩된 데이터를 해독하여 해독된 데이터를 생성한다. 실시예에 따라, 암호 해독 모듈(240a)은 암호 해독 엑셀러레이터(Cipher/Decipher Accelerator, 241) 및 버퍼(243)를 포함할 수 있다. 암호 해독 엑셀러레이터(241)는 암호화되지 않은 데이터에 대한 암호화 및 암호화된 데이터(예컨대, 디코딩된 데이터)에 대한 해독을 수행하는 회로/회로들로 구현될 수 있다. 또는 암호 해독 엑셀러레이터(241)는 암호화되지 않은 데이터에 대한 암호화 및 암호화된 데이터(예컨대, 디코딩된 데이터)에 대한 해독을 수행하는 프로그램을 실행하는 프로세서로 구현될 수도 있다. 버퍼(241)는 암호 해독 엑셀러레이터(241)의 입력 데이터 및/혹은 출력 데이터를 일시적으로 저장할 수 있다.
암호 해독 모듈(240a)은 로컬 DMA(230a)로 해독된 데이터의 저장을 요청할 수 있다. 상기 요청에 따라, 로컬 DMA 유닛(230a)은 암호 해독 모듈(240a)로부터 해독된 데이터를 수신하여 쓰기 버퍼(253)를 통해 공유 메모리(300)에 저장한다.
실시예에 따라, 로컬 DMA 유닛(230a)은 제2 어드레스 디스크립터를 참조하여, 해독된 데이터가 저장될 어드레스 정보를 알아내고, 상기 어드레스 정보에 따라 상기 해독된 데이터를 공유 메모리(300)에 저장할 수 있다.
예컨대, 로컬 DMA 유닛(230a)은 해독된 데이터를 제2 프로세서용 할당 영역(320)의 TCP/IP 데이터 영역(321)의 소켓 버퍼(323)에 저장할 수 있다.
제2 어드레스 디스크립터를 참조하기 위한 정보는 제2 프로세서(130)로부터 로컬 DMA 유닛(230a)으로 인가되는 명령에 포함될 수 있다. 예컨대, 제2 프로세서(130)는 제2 어드레스 디스크립터 참조 정보를 포함하는 명령을 로컬 DMA 유닛(230a)으로 발급할 수 있다. 또는 제2 프로세서(130)는 제2 어드레스 디스크립터 참조 정보를 로컬 DMA 유닛(230a) 내의 레지스터(미도시)에 설정할 수 있다.
AP SOC(103)는 CPU(central processing unit)(130a), 그래픽 프로세싱 유닛(GPU: graphics processing unit)(132), 제2 DMA 유닛(134) 및 제2 버스(150)를 포함할 수 있다.
CPU(130a)는 AP SOC(103)의 전반적인 동작을 제어한다.
CPU(130a)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다.
CPU(130a)는 도 1의 제2 프로세서(130)에 해당할 수 있다. 도 2에 도시된 바와 같이, CPU(130a)는 다른 프로세서 및/또는 소자와 함께 하나의 SOC(즉, AP SOC(103))로 구현될 수 있으나, 이에 한정되는 것은 아니다.
CPU(130a)는 공유 메모리(300)에 저장된 해독된 데이터를 독출하여 처리할 수 있다. CPU(130a)는 또한 무선 통신을 통해 전송하기 위한 데이터(예컨대, 패킷 데이터)를 생성하여 공유 메모리(300)에 저장할 수 있다.
GPU(132)는 그래픽 처리와 관련된 프로그램 명령들을 읽고 수행할 수 있다. 예컨대, GPU(132)는 그래픽 관련 도형 처리 등을 고속으로 수행할 수 있다.
제2 DMA 유닛(134)는 CPU(130a), GPU(132) 또는 다른 버스 마스터(136)의 요청에 따라, 공유 메모리(300)로 데이터를 저장하거나, 공유 메모리(300)로부터 데이터를 독출할 수 있다.
예컨대, 제2 DMA 유닛(134)는 CPU(130a)의 요청에 따라, 공유 메모리(300)에 저장된 해독된 데이터를 독출할 수 있고, CPU(130a)에 의해 생성된 패킷 데이터를 공유 메모리(300)에 저장할 수 있다.
도 4는 본 발명의 실시예에 따른 멀티 프로세서 시스템을 보다 자세히 나타내는 도면이다. 도 4의 멀티 프로세서 시스템(10b)의 구성 및 동작은 도 3의 멀티 프로세서 시스템(10a)의 구성 및 동작과 유사하므로, 설명의 중복을 피하기 위하여 차이점 위주로 기술한다.
도 3 및 도 4를 참조하면, 멀티 프로세서 시스템(10b)은 시스템 온 칩(SOC)(100b) 및 공유 메모리(300)를 포함한다.
SOC(100b)는 CP SOC(101), AP SCO(103) 및 메모리 인터페이스 회로(200b)를 포함한다.
메모리 인터페이스 회로(200b)는 로컬 버스(210b), 메모리 컨트롤러(220b), 로컬 DMA(230b), 및 암호 해독 모듈(240b)를 포함할 수 있다.
도 3의 실시예에서는, 로컬 DMA(230a) 및 암호 해독 모듈(240a)은 로컬 버스(210a)의 뒷단(backend)인 메모리 컨트롤러(220a)의 내부에 위치하는 데 반하여, 도 4의 실시예에서는, 로컬 DMA(230b) 및 암호 해독 모듈(240b)은 로컬 버스(210b)의 앞단(frontend)에 위치한다.
로컬 버스(210b)는 제1 버스(140) 및 제2 버스(150)에 연결될 수 있다.
예컨대, 로컬 버스(210b)는 제1 버스(140)와 함께, 제1 프로세서(110)와 메모리 컨트롤러(220b) 간의 데이터 전송을 지원하고, 또한 제2 버스(150)와 함께, 제2 프로세서(130)와 메모리 컨트롤러(220b)간의 데이터 전송을 지원할 수 있다.
메모리 컨트롤러(220b)는 독출 버퍼(251) 및 쓰기 버퍼(253)를 포함할 수 있다.
메모리 컨트롤러(220b)는 제1 DMA 유닛(116)로부터 제1 버스(140) 및 로컬 버스(210b)를 통해 디코딩된 데이터를 수신하여 쓰기 버퍼(253)에 일시적으로 저장할 수 있다. 메모리 컨트롤러(220b)는 쓰기 버퍼(253)에 저장된 디코딩된 데이터를 공유 메모리(300)에 저장할 수 있다.
암호 해독 모듈(240b)은 로컬 DMA(230b)로 공유 메모리(300)에 저장된 디코딩된 데이터의 독출을 요청할 수 있다. 상기 요청에 따라, 로컬 DMA 유닛(230b)은 공유 메모리(300)로부터 디코딩된 데이터를 독출하여 암호 해독 모듈(240b)로 제공한다.
본 실시예에서는, 공유 메모리(300)로부터 독출된 디코딩된 데이터는 읽기 버퍼(251)에 일시적으로 저장되고, 로컬 버스(210b)를 통하여 로컬 DMA(230b) 내부의 DMA 버퍼(231)에 저장된 후 암호 해독 모듈(240b) 내부의 버퍼(243)로 전달되어 저장될 수 있다.
암호 해독 엑셀러레이터(241)는 암호 해독 모듈(240b) 내부의 버퍼(243)에 저장된 디코딩된 데이터를 해독하여 해독된 데이터를 생성한다.
암호 해독 모듈(240b)은 로컬 DMA(230b)로 해독된 데이터의 저장을 요청할 수 있다. 상기 요청에 따라, 로컬 DMA 유닛(230b)은 암호 해독 모듈(240b)로부터 해독된 데이터를 수신하여 공유 메모리(300)에 저장한다.
실시예에 따라, 암호 해독 엑셀러레이터(241)는 해독된 데이터를 암호 해독 모듈(240b) 내부 버퍼(243)에 저장할 수 있다. 해독된 데이터는 내부 버퍼(243)에서 로컬 DMA(230b)의 DMA 버퍼(231)로 전달되어 저장되고, 로컬 버스(210b)를 통하여 메모리 컨트롤러(220b)의 쓰기 버퍼(243)에 일시 저장된 후 공유 메모리(300)에 저장될 수 있다.
상술한 바와 같이, 메모리 인터페이스 회로(200a 또는 200b) 내에서의 로컬 DMA(230a 또는 230b) 및 암호 해독 모듈(240a 또는 240b)의 위치에 따라, 디코딩된 데이터의 독출 경로 및 해독된 데이터의 저장 경로가 달라질 수는 있으나, 메모리 인터페이스 회로(200a 또는 200b)가 공유 메모리(300)로부터 디코딩된 데이터를 독출하고, 이를 해독하여 공유 메모리(300)에 저장하는 기능 및 동작은 거의 동일하다.
상술한 바와 같이 본 발명의 실시예에 따르면, 메모리 인터페이스 회로(200a 또는 200b) 내에 로컬 DMA(230a 또는 230b) 및 암호 해독 모듈(240a 또는 240b)을 내장함으로써, 공유 메모리(300)의 제1 프로세서용 할당 영역(310)에서 제2 프로세서용 할당 영역(320)으로 데이터 전달시 또는 그 반대로 데이터 전달시 제1 프로세서(110) 및 제2 프로세서(130)의 버스를 거치지 않고, 메모리 인터페이스 회로(200)만을 거처 내부적으로 전달된다. 따라서, 제1 프로세서(110)와 제2 프로세서(130)간 데이터 전송시, 공유 메모리(300)를 억세스하는 횟수를 줄일 수 있다.
이에 따라, 멀티 프로세서 시스템의 성능(예컨대, 속도 등)이 향상되고, 전력 소모는 줄어들 수 있다,
도 5는 도 3에 도시된 메모리 인터페이스 회로의 변형예를 나타내는 블록도이다. 도 3 및 도 5를 참조하면, 메모리 인터페이스 회로(200c)는 도 3에 도시된 메모리 인터페이스 회로(200a)와 그 구성 및 동작이 유사하므로, 설명의 중복을 피하기 위하여 차이점 위주로 기술한다.
메모리 인터페이스 회로(200c)는 도 3에 도시된 메모리 인터페이스 회로(200a)에 비하여, 시스템 캐시(260)를 더 포함한다.
시스템 캐시(260)는 공유 메모리(300)에 저장된 데이터의 일부를 저장할 수 있다. 메모리 인터페이스 회로(200c)는 공유 메모리(300)로부터 데이터를 독출하기 전에, 시스템 캐시(260)에 해당 데이터가 있는지를 먼저 확인할 수 있다.
예컨대, 메모리 인터페이스 회로(200c)의 로컬 DMA 유닛(230a)은 암호 해독 모듈(240a)의 요청에 따라, 공유 메모리(300)로부터 디코딩된 데이터를 독출하고자 할 때, 먼저 시스템 캐시(260)로 해당 디코딩된 데이터를 요청할 수 있다. 도 5에서 블록(215)은 로컬 DMA 유닛(230a) 및 암호 해독 모듈(240a)을 포함하는 블록을 나타낸다.
만약, 시스템 캐시(260)에 원하는 데이터(예컨대, 디코딩된 데이터)가 있다면, 캐시-히트(cache-hit)에 해당하며, 이 경우, 로컬 DMA 유닛(230a)은 시스템 캐시(260)로부터 디코딩된 데이터를 독출하여 암호 해독 모듈(240a)로 제공할 수 있다.
한편, 시스템 캐시(260)에 원하는 데이터(예컨대, 디코딩된 데이터)가 없다면, 캐시-미스(cache-miss)에 해당하며, 이 경우, 로컬 DMA 유닛(230a)은 메모리 컨트롤러(220c)를 통해 공유 메모리(300)로부터 디코딩된 데이터를 독출하여 암호 해독 모듈(240a)로 제공할 수 있다. 이 때, 공유 메모리(300)로부터 독출된 디코딩된 데이터는 시스템 캐시(260)에 저장될 수 있다.
도 6은 도 4에 도시된 메모리 인터페이스 회로의 변형예를 나타내는 블록도이다. 도 4 및 도 6을 참조하면, 메모리 인터페이스 회로(200d)는 도 4에 도시된 메모리 인터페이스 회로(200b)와 그 구성 및 동작이 유사하므로, 설명의 중복을 피하기 위하여 차이점 위주로 기술한다.
메모리 인터페이스 회로(200d)는 도 4에 도시된 메모리 인터페이스 회로(200b)에 비하여, 시스템 캐시(260)를 더 포함한다.
시스템 캐시(260)는 도 6에서 상술한 바와 같으므로, 이에 대한 설명은 생략한다.
도 7은 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 나타내는 플로우차트이다. 도 8은 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 설명하기 위한 도면이다. 특히, 도 7 및 도 8은 본 발명의 실시예에 따른 멀티 프로세서 시스템이 다운링크 데이터를 처리하는 방법의 일 예를 나타낸다. 도 7 및 도 8의 방법은 도 1, 도 3 또는 도 4에 도시된 멀티 프로세서 시스템(10, 10a, 10b)에 의해 수행될 수 있다.
먼저, CP(101)는 다운링크 데이터의 저장 위치를 지정하기 위한 제1 어드레스 디스크립터를 생성하여(S110), 메모리 인터페이스 회로(200)를 통하여, 공유 메모리(300)에 저장할 수 있다(S115, S120). CP(101)는 제1 프로세서(110) 또는 CP SOC(101)에 해당할 수 있다. 제1 어드레스 디스크립터는 공유 메모리(300) 내에서 다운링크 데이터(예컨대, 디코딩된 데이터)의 저장 위치를 지정하기 위한 어드레스 정보를 포함할 수 있다.
예컨대, CP(101)는 제1 어드레스 디스크립터를 생성하여(S110), 메모리 인터페이스 회로(200)로 저장 요청을 하고(S115), 이에 응답하여, 메모리 인터페이스 회로(200)는 제1 어드레스 디스크립터를 공유 메모리(300)에 저장할 수 있다(S120).
실시예에 따라, 도 8에 도시된 바와 같이, 제1 어드레스 디스크립터는 공유 메모리(300)의 제1 프로세서용 할당 영역(310)의 어드레스 디스크립터 영역(313)에 저장될 수 있다(도 8의 S13).
AP(103) 역시 다운링크 데이터의 저장 위치를 지정하기 위한 제2 어드레스 디스크립터를 생성하여(S125), 메모리 인터페이스 회로(200)를 통하여, 공유 메모리(300)에 저장할 수 있다(S130, S135). AP(103)는 제2 프로세서(130) 또는 AP SOC(103)에 해당할 수 있다.
제2 어드레스 디스크립터는 공유 메모리(300) 내에서 다운링크 데이터(예컨대, 해독된 데이터)의 저장 위치를 지정하기 위한 어드레스 정보를 포함할 수 있다.
예컨대, AP(103)는 제2 어드레스 디스크립터를 생성하여(S125), 메모리 인터페이스 회로(200)로 저장 요청을 하고(S130), 이에 응답하여, 메모리 인터페이스 회로(200)는 제2 어드레스 디스크립터를 공유 메모리(300)에 저장할 수 있다(S135).
실시예에 따라, 도 8에 도시된 바와 같이, 제2 어드레스 디스크립터는 공유 메모리(300)의 제2 프로세서용 할당 영역(320)의 어드레스 디스크립터 영역(325)에 저장될 수 있다(도 8의 S11).
CP(101)는 무선 통신을 통해 무선 데이터를 수신하고, 상기 수신된 무선 데이터에 복조 및 디코딩하여 디코딩 데이터를 생성한다(S140). 또한, CP(101)는 디코딩된 데이터를 이용하여 미리 정해진 포맷의 패킷 데이터(예컨대, IP 패킷 데이터)를 생성할 수 있다.
CP(101)는 디코딩 데이터를 메모리 인터페이스 회로(200)로 전달하여 디코딩 데이터의 저장을 요청할 수 있다(S145).
예컨대, CP(101)는 메모리 인터페이스 회로(200)로 디코딩 데이터의 저장 요청을 하고(S145), 이에 응답하여, 메모리 인터페이스 회로(200)는 디코딩 데이터를 공유 메모리(300)에 저장할 수 있다(S150).
실시예에 따라, 도 8에 도시된 바와 같이, CP(101)는 디코딩 데이터를 포함하는 IP 패킷 데이터를 생성하여 공유 메모리(300)의 제1 프로세서용 할당 영역(310)의 패킷 데이터 영역(315)에 저장할 수 있다(도 8의 S14).
메모리 인터페이스 회로(200)가 공유 메모리(300) 제1 프로세서용 할당 영역(310)으로부터 디코딩 데이터가 포함된 패킷 데이터를 독출하여(S155) 해독(deciphering)한다(S160). 메모리 인터페이스 회로(200)는 또한 해독된 데이터를 상기 공유 메모리(300)의 제2 프로세서용 할당 영역(320)에 저장한다(S165).
예컨대, 도 8에 도시된 바와 같이, 메모리 인터페이스 회로(200)는 제2 프로세서용 할당 영역(320)의 어드레스 디스크립터 영역(325)에 저장된 제2 어드레스 디스크립터를 참조하여, 제2 프로세서용 할당 영역(320)의 소켓 버퍼(323)에 해독된 패킷 데이터를 저장할 수 있다(도 8의 S15).
제2 프로세서용 할당 영역(320)의 소켓 버퍼(323)에 해독된 데이터가 저장되면, AP(103)은 메모리 인터페이스 회로(200)로 해독된 데이터의 독출을 요청하고(S170), 메모리 인터페이스 회로(200)는 상기 요청에 응답하여 공유 메모리(300)로부터 해독된 데이터를 독출하여(S175), AP(103)로 제공할 수 있다(S180). AP(103)는 해독된 데이터를 처리하여 사용자에게 제공할 수 있다(S185).
실시예에 따라, S15 단계 이전에, AP(103)는 해독된 패킷 데이터를 저장하기 위한 소켓 버퍼 구조(socket buffer structure)를 생성하여 제2 프로세서용 할당 영역(320)의 TCP/IP 데이터 영역(321)에 저장할 수 있다.
실시예에 따라, 제2 프로세서용 할당 영역(320)의 소켓 버퍼(323)에 해독된 패킷 데이터가 저장되면 메일 박스(도 8의 350)에 완료 신호가 저장될 수 있다. 이 경우, 메일 박스(도 8의 350)는 AP(103)로 인터럽트 신호를 발생할 수 있다(도 8의 S16).
그러면, AP(103)는 인터럽트 신호에 응답하여 공유 메모리(300)로부터 해독된 데이터의 독출하여 처리할 수 있다(도 8의 S17).
실시예에 따라, 도 7 또는 도 8에 도시된 멀티 프로세서 시스템의 동작 방법의 각 단계의 실행 순서는 달라질 수도 있으며, 하나 이상의 단계가 병렬적으로 실행될 수도 있다.
도 9는 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 나타내는 플로우차트이다. 도 10은 본 발명의 실시예에 따른 멀티 프로세서 시스템의 동작 방법을 설명하기 위한 도면이다. 특히, 도 9 및 도 10은 본 발명의 실시예에 따른 멀티 프로세서 시스템이 업링크 데이터를 처리하는 방법의 일 예를 나타낸다. 도 9 및 도 10의 방법은 도 1, 도 3 또는 도 4에 도시된 멀티 프로세서 시스템(10, 10a, 10b)에 의해 수행될 수 있다.
먼저, AP(103)는 업링크 데이터의 저장 위치를 지정하기 위한 제3 어드레스 디스크립터를 생성하여(S210), 메모리 인터페이스 회로(200)를 통하여, 공유 메모리(300)에 저장할 수 있다(S215, S220). AP(103)는 제2 프로세서(130) 또는 AP SOC(103)에 해당할 수 있다. 제3 어드레스 디스크립터는 공유 메모리(300) 내에서 업링크 데이터(예컨대, AP에서 생성된 패킷 데이터)의 저장 위치를 지정하기 위한 어드레스 정보를 포함할 수 있다.
예컨대, AP(103)는 제3 어드레스 디스크립터를 생성하여(S210), 메모리 인터페이스 회로(200)로 저장 요청을 하고(S215), 이에 응답하여, 메모리 인터페이스 회로(200)는 제3 어드레스 디스크립터를 공유 메모리(300)에 저장할 수 있다(S320).
실시예에 따라, 도 10에 도시된 바와 같이, 제3 어드레스 디스크립터는 공유 메모리(300)의 제2 프로세서용 할당 영역(320)의 어드레스 디스크립터 영역(325)에 저장될 수 있다(도 10의 S21).
CP(101) 역시 업링크 데이터의 저장 위치를 지정하기 위한 제4 어드레스 디스크립터를 생성하여(S225), 메모리 인터페이스 회로(200)를 통하여, 공유 메모리(300)에 저장할 수 있다(S230, S235). CP(101)는 제1 프로세서(110) 또는 CP SOC(101)에 해당할 수 있다.
제4 어드레스 디스크립터는 공유 메모리(300) 내에서 업링크 데이터의 저장 위치를 지정하기 위한 어드레스 정보를 포함할 수 있다.
예컨대, CP(101)는 제4 어드레스 디스크립터를 생성하여(S225), 메모리 인터페이스 회로(200)로 저장 요청을 하고(S230), 이에 응답하여, 메모리 인터페이스 회로(200)는 제4 어드레스 디스크립터를 공유 메모리(300)에 저장할 수 있다(S235).
실시예에 따라, 도 10에 도시된 바와 같이, 제4 어드레스 디스크립터는 공유 메모리(300)의 제1 프로세서용 할당 영역(310)의 어드레스 디스크립터 영역(313)에 저장될 수 있다(도 10의 S23).
AP(103)는 무선 통신을 통해 전송하기 위한 업링크 데이터를 생성한다(S240). 또한, AP(103)는 업링크 데이터를 포함하는 미리 정해진 포맷의 패킷 데이터(예컨대, IP 패킷 데이터)를 생성할 수 있다.
AP(103)는 업링크 데이터를 메모리 인터페이스 회로(200)로 전달하여 업링크 데이터의 저장을 요청할 수 있다(S245).
예컨대, AP(103)는 메모리 인터페이스 회로(200)로 업링크 데이터의 저장 요청을 하고(S245), 이에 응답하여, 메모리 인터페이스 회로(200)는 업링크 데이터를 공유 메모리(300)에 저장할 수 있다(S250).
실시예에 따라, 도 10에 도시된 바와 같이, AP(103)는 업링크 데이터를 포함하는 IP 패킷 데이터를 생성하여 공유 메모리(300)의 제2 프로세서용 할당 영역(320)의 TCP/IP 데이터 영역(321)의 소켓 버퍼(323)에 저장할 수 있다(도 10의 S22).
실시예에 따라, S22 단계 이전에, AP(103)는 업링크 패킷 데이터를 저장하기 위한 소켓 버퍼 구조(socket buffer structure)를 생성하여 제2 프로세서용 할당 영역(320)의 TCP/IP 데이터 영역(321)에 저장할 수 있다.
메모리 인터페이스 회로(200)가 공유 메모리(300)의 제2 프로세서용 할당 영역(320)의 소켓 버퍼(323)로부터 업링크 데이터를 독출하여(S255) 암호화(ciphering)한다(S260).
메모리 인터페이스 회로(200)는 또한 암호화된 데이터를 상기 공유 메모리(300)의 제1 프로세서용 할당 영역(310)에 저장한다(S265).
예컨대, 도 10에 도시된 바와 같이, 메모리 인터페이스 회로(200)는 제1 프로세서용 할당 영역(310)의 어드레스 디스크립터 영역(313)에 저장된 제4 어드레스 디스크립터를 참조하여, 제1 프로세서용 할당 영역(310)의 패킷 데이터 영역(315)에 암호화된 업링크 데이터를 저장할 수 있다(도 10의 S25).
제1 프로세서용 할당 영역(310)의 패킷 데이터 영역(315)에 암호화된 업링크 데이터가 저장되면, CP(101)은 메모리 인터페이스 회로(200)로 암호화된 업링크 데이터의 독출을 요청하고(S270), 메모리 인터페이스 회로(200)는 상기 요청에 응답하여 공유 메모리(300)로부터 암호화된 업링크 데이터를 독출하여(S275), CP(101)로 제공할 수 있다(S280). CP(101)는 암호화된 업링크 데이터를 인코딩 및 변조하여 무선 통신으로 전송하기에 적합한 무선 데이터로 변환할 수 있다(S285).
실시예에 따라, 제1 프로세서용 할당 영역(310)의 패킷 데이터 영역(315)에 암호화된 업링크 데이터가 저장되면, 메일 박스(도 10의 350)에 완료 신호가 저장될 수 있다. 이 경우, 메일 박스(도 10의 350)는 CP(101)로 인터럽트 신호를 발생할 수 있다(도 10의 S26).
그러면, CP(101)는 인터럽트 신호에 응답하여 공유 메모리(300)로부터 암호화된 업링크 데이터를 독출하여 무선 데이터로 변환할 수 있다(도 10의 S27).
도 11은 본 발명의 다른 실시 예에 따른 전자 시스템의 구성 블록도이다.
이를 참조하면, 전자 시스템(400)은 PC(personal computer) 또는 데이터 서버, 랩탑(laptop) 컴퓨터 또는 휴대용 장치로 구현될 수 있다. 휴대용 장치는 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
전자 시스템(400)은 SOC(100), 파워 소스(410), 저장 장치(420), 메모리(300), 입출력 포트들(440), 확장 카드(450), 네트워크 장치(460), 및 디스플레이(470)를 포함한다. 실시 예에 따라. 전자 시스템(400)은 카메라 모듈(480)을 더 포함할 수 있다.
SOC(100)는 구성 요소들(elements; 410~480) 중에서 적어도 하나의 동작을 제어할 수 있다. SOC(100)는 도 1, 도 3, 또는 도 4에 도시된 SOC(100, 100a, 100b)에 해당한다.
파워 소스(410)는 구성 요소들(405 및 420~480) 중에서 적어도 하나로 동작 전압을 공급할 수 있다.
저장 장치(420)는 하드디스크 드라이브(hard disk drive) 또는 SSD(solid state drive)로 구현될 수 있다.
메모리(300)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
입출력 포트들(440)은 전자 시스템(400)으로 데이터를 전송하거나 또는 전자 시스템(400)으로부터 출력된 데이터를 외부 장치로 전송할 수 있는 포트들을 의미한다. 예컨대, 입출력 포트들(440)은 컴퓨터 마우스와 같은 포인팅 장치(pointing device)를 접속하기 위한 포트, 프린터를 접속하기 위한 포트, 또는 USB 드라이브를 접속하기 위한 포트일 수 있다.
확장 카드(450)는 SD(secure digital) 카드 또는 MMC(multimedia card)로 구현될 수 있다. 실시 예에 따라, 확장 카드(450)는 SIM(Subscriber Identification Module) 카드 또는 USIM(Universal Subscriber Identity Module) 카드일 수 있다.
네트워크 장치(460)는 전자 시스템(400)을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다.
디스플레이(470)는 저장 장치(420), 메모리(300), 입출력 포트들(440), 확장 카드(450), 또는 네트워크 장치(460)로부터 출력된 데이터를 디스플레이할 수 있다.
카메라 모듈(480)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다. 따라서, 카메라 모듈(480)로부터 출력된 전기적인 이미지는 저장 장치(420), 메모리(300), 또는 확장 카드(450)에 저장될 수 있다. 또한, 카메라 모듈 (480)로부터 출력된 전기적인 이미지는 디스플레이(420)를 통하여 디스플레이될 수 있다.
도 12는 본 발명의 실시예에 따른 모바일 기기(500)를 간략히 나타내는 도면이다. 도 12를 참조하면, 모바일 기기(500)는 도 1의 멀티 프로세서 시스템 (10)을 포함할 수 있다.
모바일 기기(500)는 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 또는 모바일 인터넷 장치(mobile internet device(MID)) 등으로 구현될 수 있으나, 이에 한정되는 것은 아니다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
멀티 프로세서 시스템: 10, 10a, 10b
시스템 온 칩(SOC: system-on-chip): 100, 100a, 100b
프로세서: 110, 130
메모리 인터페이스 회로: 200, 200a, 200b, 200c, 200d
공유 메모리: 300

Claims (20)

  1. 제1 프로세서;
    제2 프로세서;
    상기 제1 및 제2 프로세서에 의해 공통으로 사용되는 공유 메모리; 및
    상기 공유 메모리와 상기 제1 및 제2 프로세서 사이에 배치되고, 상기 공유 메모리와 상기 제1 및 제2 프로세서 간의 인터페이스를 수행하는 메모리 인터페이스 회로를 포함하며,
    상기 제1 프로세서는
    무선 통신으로 수신된 신호를 복조(demodulation)하고 디코딩(decoding)하여, 디코딩된 데이터를 상기 메모리 인터페이스 회로를 통해 상기 공유 메모리에 저장하고,
    상기 메모리 인터페이스 회로는
    상기 제1 프로세서의 버스나 상기 제2 프로세서의 버스를 이용하지 않고, 상기 공유 메모리에 저장된 상기 디코딩된 데이터를 독출하고 해독(deciphering)하고,
    상기 제1 프로세서의 버스나 상기 제2 프로세서의 버스를 이용하지 않고, 해독된 데이터를 상기 공유 메모리에 저장하는 멀티 프로세서 시스템.
  2. 제1항에 있어서, 상기 공유 메모리는
    상기 제1 프로세서용 할당 영역 및 상기 제2 프로세서용 할당 영역을 포함하고,
    상기 디코딩된 데이터는 상기 제1 프로세서용 할당 영역에 저장되며,
    상기 해독된 데이터는 상기 제2 프로세서용 할당 영역에 저장되는 멀티 프로세서 시스템.
  3. 제2항에 있어서, 상기 메모리 인터페이스 회로는
    제1 프로세서의 제1 DMA로부터 제1 메모리 접근 요청 및 상기 제2 프로세서의 제2 DMA로부터의 제2 메모리 접근 요청에 따라 공유 메모리를 억세스하는 메모리 컨트롤러; 및
    상기 제1 메모리 접근 요청 및 상기 제2 메모리 접근 요청을 수신하여 상기 메모리 컨트롤러로 전달하는 로컬 버스를 포함하는 멀티 프로세서 시스템.
  4. 제3항에 있어서, 상기 메모리 컨트롤러는
    로컬 DMA; 및
    상기 로컬 DMA로 상기 제1 프로세서용 할당 영역에 저장된 상기 디코딩된 데이터의 독출을 요청하고, 상기 로컬 DMA를 통해 수신한 상기 디코딩된 데이터를 해독하는 암호 해독 모듈을 포함하며,
    상기 로컬 DMA는
    상기 암호 해독 모듈의 요청에 따라, 상기 제1 프로세서용 할당 영역에 저장된 상기 디코딩된 데이터를 독출하여 상기 암호 해독 모듈로 제공하는 멀티 프로세서 시스템.
  5. 제4항에 있어서, 상기 로컬 DMA은
    상기 제1 프로세서용 할당 영역에 저장된 제1 어드레스 디스크립터를 참조하여 상기 디코딩된 데이터를 독출하며,
    상기 제1 어드레스 디스크립터는 상기 디코딩된 데이터의 어드레스 정보를 포함하고, 상기 제1 프로세서에 의해 생성되어 상기 제1 프로세서용 할당 영역에 저장되는 멀티 프로세서 시스템.
  6. 제4항에 있어서, 상기 로컬 DMA는
    상기 암호 해독 모듈의 요청에 따라, 상기 제2 프로세서용 할당 영역에 기 저장된 제2 어드레스 디스크립터를 참조하여, 상기 해독된 데이터를 상기 제2 프로세서용 할당 영역에 저장하며,
    상기 제2 어드레스 디스크립터는 상기 해독된 데이터의 어드레스 정보를 포함하고, 상기 제2 프로세서에 의해 생성되어 상기 제2 프로세서용 할당 영역에 저장되는 멀티 프로세서 시스템.
  7. 제4항에 있어서, 상기 로컬 DMA는
    상기 해독된 데이터를 상기 제2 프로세서용 할당 영역에 저장한 후 메일 박스에 저장 완료를 알려 주고,
    상기 메일 박스는 상기 제2 프로세서로 인터럽트를 발생하는 멀티 프로세서 시스템.
  8. 제7항에 있어서, 상기 제2 프로세서는
    상기 메일 박스의 상기 인터럽트에 응답하여, 상기 메모리 인터페이스 회로로 상기 해독된 데이터를 요청하고,
    상기 메모리 인터페이스 회로로부터 상기 해독된 데이터를 수신하여 처리하는
    상기 제2 메모리 접근 요청에 따라, 상기 제2 어드레스 디스크립터를 참조하여, 상기 제2 프로세서용 할당 영역으로부터 상기 해독된 데이터를 독출하여 상기 제2 프로세서로 전송하는 멀티 프로세서 시스템.
  9. 제4항에 있어서, 상기 메모리 인터페이스 회로는
    상기 공유 메모리에 저장된 데이터의 일부를 저장하며,
    상기 공유 메모리에 억세스하기 전에 먼저 억세스하는 시스템 캐시를 더 포함하는 멀티 프로세서 시스템.
  10. 제3항에 있어서, 상기 메모리 인터페이스 회로는
    상기 디코딩된 데이터를 해독(deciphering)하여, 해독된 데이터를 생성하는 암호 해독 모듈; 및
    상기 로컬 버스에 연결되고, 상기 암호 해독 모듈의 요청에 따라 상기 로컬 버스로 상기 해독된 데이터를 요청하는 로컬 DMA을 포함하며,
    상기 로컬 버스는 상기 로컬 DMA의 상기 해독된 데이터에 대한 요청 신호를 상기 메모리 컨트롤러로 전달하는 멀티 프로세서 시스템.
  11. 제10항에 있어서, 상기 로컬 DMA는
    상기 제1 프로세서용 할당 영역에 저장된 제1 어드레스 디스크립터를 참조하여 상기 디코딩된 데이터를 독출하며,
    상기 제1 어드레스 디스크립터는 상기 디코딩된 데이터의 어드레스 정보를 포함하고, 상기 제1 프로세서에 의해 생성되어 상기 제1 프로세서용 할당 영역에 저장되는 멀티 프로세서 시스템.
  12. 제10항에 있어서, 상기 로컬 DMA는
    상기 암호 해독 모듈의 요청에 따라, 상기 제2 프로세서용 할당 영역에 기 저장된 제2 어드레스 디스크립터를 참조하여, 상기 해독된 데이터를 상기 제2 프로세서용 할당 영역에 저장하며,
    상기 제2 어드레스 디스크립터는 상기 해독된 데이터의 어드레스 정보를 포함하고, 상기 제2 프로세서에 의해 생성되어 상기 제2 프로세서용 할당 영역에 저장되는 멀티 프로세서 시스템.
  13. 제10항에 있어서, 상기 메모리 인터페이스 회로는
    상기 공유 메모리에 저장된 데이터의 일부를 저장하며,
    상기 공유 메모리에 억세스하기 전에 먼저 억세스하는 시스템 캐시를 더 포함하는 멀티 프로세서 시스템.
  14. 제1 프로세서, 및 제2 프로세서를 포함하는 멀티 프로세서 시스템의 동작 방법에 있어서,
    상기 제1 프로세서가 무선 통신을 통해 데이터를 수신하고, 상기 데이터에 기초하여 제1 패킷 데이터를 생성하는 단계;
    상기 제1 프로세서가 공유 메모리의 제1 프로세서용 할당 영역에 상기 제1 패킷 데이터를 저장하는 단계;
    상기 공유 메모리와 상기 제1 및 제2 프로세서 사이에 배치된 메모리 인터페이스 회로가, 상기 제1 프로세서의 버스나 상기 제2 프로세서의 버스를 이용하지 않고 상기 제1 프로세서용 할당 영역으로부터 상기 제1 패킷 데이터를 독출하고, 상기 제1 패킷 데이터를 해독(deciphering)하여 해독된 데이터를 생성하는 단계;
    상기 메모리 인터페이스 회로가, 상기 제1 프로세서의 버스나 상기 제2 프로세서의 버스를 이용하지 않고 상기 공유 메모리의 제2 프로세서용 할당 영역에 상기 해독된 데이터를 저장하는 단계; 및
    상기 제2 프로세서가 상기 제2 프로세서용 할당 영역에서 상기 해독된 데이터를 독출하여 처리하는 단계를 포함하는 멀티 프로세서 시스템의 동작 방법.
  15. 제14항에 있어서, 상기 방법은
    상기 제1 패킷 데이터를 저장하는 단계 이전에, 상기 제1 프로세서가 제1 어드레스 디스크립터를 생성하여 상기 공유 메모리의 제1 프로세서용 할당 영역에 저장하는 단계; 및
    상기 해독된 데이터를 저장하는 단계 이전에, 상기 제2 프로세서가 제2 어드레스 디스크립터를 생성하여 상기 공유 메모리의 제2 프로세서용 할당 영역에 저장하는 단계를 더 포함하며,
    상기 제1 어드레스 디스크립터는 상기 제1 패킷 데이터의 저장 위치를 지정하기 위한 어드레스 정보를 포함하고,
    상기 제2 어드레스 디스크립터는 상기 해독된 데이터의 저장 위치를 지정하기 위한 어드레스 정보를 포함하는 멀티 프로세서 시스템의 동작 방법.
  16. 제15항에 있어서, 상기 제1 패킷 데이터를 독출하여, 해독(deciphering)하는 단계는
    상기 메모리 인터페이스 회로 내의 로컬 DMA가 상기 제1 어드레스 디스크립터를 참조하여 상기 제1 프로세서용 할당 영역으로부터 상기 패킷 데이터를 독출하는 단계; 및
    상기 메모리 인터페이스 회로 내의 암호 해독 모듈이 상기 독출된 상기 패킷 데이터를 해독(deciphering)하는 단계를 포함하는 멀티 프로세서 시스템의 동작 방법.
  17. 제14항에 있어서, 상기 방법은
    상기 제2 프로세서가 제2 패킷 데이터를 생성하여, 상기 공유 메모리의 제2 프로세서용 할당 영역에 상기 제2 패킷 데이터를 저장하는 단계;
    상기 메모리 인터페이스 회로가 상기 제2 프로세서용 할당 영역으로부터 상기 제2 패킷 데이터를 독출하여, 암호화(ciphering)하는 단계;
    상기 메모리 인터페이스 회로가 상기 공유 메모리의 제1 프로세서용 할당 영역에 상기 암호화된 데이터를 저장하는 단계;
    상기 제1 프로세서가 상기 제1 프로세서용 할당 영역에 저장된 상기 암호화된 데이터를 독출하는 단계; 및
    상기 제2 프로세서가 상기 암호화된 데이터를 무선 통신 통해 전송하기 위한 무선 데이터로 변환하는 단계를 더 포함하는 멀티 프로세서 시스템의 동작 방법.
  18. 제1 프로세서;
    제2 프로세서; 및
    상기 제1 및 제2 프로세서에 의해 공통으로 사용되는 공유 메모리와, 상기 공유 메모리와 상기 제1 및 제2 프로세서 사이에 배치되고 상기 제1 및 제2 프로세서 간의 인터페이스를 수행하는 메모리 인터페이스 회로를 포함하며,
    상기 제1 프로세서는
    무선 통신으로 수신된 신호를 복조(demodulation)하고 디코딩(decoding)하여, 디코딩된 데이터를 상기 메모리 인터페이스 회로를 통해 상기 공유 메모리에 저장하고,
    상기 메모리 인터페이스 회로는
    상기 제1 프로세서의 버스나 상기 제2 프로세서의 버스를 이용하지 않고, 상기 공유 메모리에 저장된 상기 디코딩된 데이터를 독출하고 해독(deciphering)하고,
    상기 제1 프로세서의 버스나 상기 제2 프로세서의 버스를 이용하지 않고, 해독된 데이터를 상기 공유 메모리에 저장하는 시스템 온 칩.
  19. 제18항에 있어서, 상기 공유 메모리는
    상기 제1 프로세서용 할당 영역 및 상기 제2 프로세서용 할당 영역을 포함하고,
    상기 디코딩된 데이터는 상기 제1 프로세서용 할당 영역에 저장되며,
    상기 해독된 데이터는 상기 제2 프로세서용 할당 영역에 저장되는 시스템 온 칩.
  20. 제19항에 있어서, 상기 메모리 인터페이스 회로는
    상기 제1 프로세서의 요청 및 상기 제2 프로세서의 요청에 따라 공유 메모리를 억세스하는 메모리 컨트롤러; 및
    상기 제1 프로세서의 요청 및 상기 제2 프로세서의 요청을 수신하여 상기 메모리 컨트롤러로 전달하는 로컬 버스를 포함하는 시스템 온 칩.
KR1020150158904A 2015-11-12 2015-11-12 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법 KR102407917B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020150158904A KR102407917B1 (ko) 2015-11-12 2015-11-12 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법
DE102016121152.4A DE102016121152A1 (de) 2015-11-12 2016-11-07 Multiprozessorsystem mit Speicher, der durch den Multiprozessor gemeinsam verwendet wird, und Verfahren dafür
US15/344,881 US10185673B2 (en) 2015-11-12 2016-11-07 Multi-processor system including memory shared by multi-processor and method thereof
TW105136177A TWI767893B (zh) 2015-11-12 2016-11-08 包含多處理器所共享之記憶體的多處理器系統
JP2016219683A JP7042552B2 (ja) 2015-11-12 2016-11-10 マルチプロセッサによって共有されるメモリを含むマルチプロセッサシステム
CN201611005736.3A CN107015940B (zh) 2015-11-12 2016-11-14 包含由多处理器共享的存储器的多处理器系统及其方法
US16/213,233 US10482042B2 (en) 2015-11-12 2018-12-07 Multi-processor system including memory shared by multi-processor and method thereof
US16/659,791 US10949364B2 (en) 2015-11-12 2019-10-22 Multi-processor system including memory shared by multi-processor and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150158904A KR102407917B1 (ko) 2015-11-12 2015-11-12 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법

Publications (2)

Publication Number Publication Date
KR20170055748A KR20170055748A (ko) 2017-05-22
KR102407917B1 true KR102407917B1 (ko) 2022-06-10

Family

ID=58640506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150158904A KR102407917B1 (ko) 2015-11-12 2015-11-12 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법

Country Status (6)

Country Link
US (3) US10185673B2 (ko)
JP (1) JP7042552B2 (ko)
KR (1) KR102407917B1 (ko)
CN (1) CN107015940B (ko)
DE (1) DE102016121152A1 (ko)
TW (1) TWI767893B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102407917B1 (ko) 2015-11-12 2022-06-10 삼성전자주식회사 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법
CN107577625B (zh) * 2017-09-22 2023-06-13 北京算能科技有限公司 数据处理芯片和系统、数据存储转发处理方法
KR102438319B1 (ko) * 2018-02-07 2022-09-01 한국전자통신연구원 공통 메모리 인터페이스 장치 및 방법
TWI680375B (zh) * 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
US10972142B1 (en) * 2018-12-05 2021-04-06 Nxp Usa, Inc. Wireless networking transceiver system with shared memory
CN112035866B (zh) * 2020-11-04 2021-07-23 湖北芯擎科技有限公司 一种数据加密方法、装置、设备和计算机可读存储介质
KR102509646B1 (ko) * 2021-11-15 2023-03-15 삼성전자주식회사 스토리지 장치
TWI826252B (zh) * 2022-12-21 2023-12-11 瑞昱半導體股份有限公司 在多個處理器之間共用儲存裝置的方法以及電子裝置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100322419A1 (en) * 2007-07-03 2010-12-23 Nec Corporation Data encryption/decryption method and data processing device

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612363A (ja) 1992-06-26 1994-01-21 Toshiba Corp メモリ制御装置およびマルチプロセッサシステム
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
JP3884990B2 (ja) 2002-04-26 2007-02-21 富士通株式会社 マルチプロセッサ装置
US7114042B2 (en) 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US7917673B2 (en) * 2003-09-20 2011-03-29 Samsung Electronics Co., Ltd. Communication device and method having a shared local memory
US7647599B2 (en) * 2003-12-22 2010-01-12 Motorola, Inc. Interprocessor communication network providing dynamic dedication of ports
US6987961B1 (en) * 2004-06-28 2006-01-17 Neomagic Corp. Ethernet emulation using a shared mailbox between two processors in a feature phone
US8001294B2 (en) 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system
US20060106988A1 (en) * 2004-11-16 2006-05-18 Charbel Khawand Method and system for exchanging data
JP4424244B2 (ja) 2005-04-13 2010-03-03 富士電機システムズ株式会社 マルチプロセッサシステム
JP4539481B2 (ja) 2005-08-02 2010-09-08 富士電機システムズ株式会社 マルチプロセッサシステム
US7725609B2 (en) * 2005-08-05 2010-05-25 Qimonda Ag System memory device having a dual port
JP4963855B2 (ja) * 2006-03-28 2012-06-27 株式会社ソニー・コンピュータエンタテインメント ネットワークコンピューティングシステムおよびマルチプロセッサコンピュータ
TW200813724A (en) * 2006-07-28 2008-03-16 Samsung Electronics Co Ltd Multipath accessible semiconductor memory device with host interface between processors
JP2008090455A (ja) 2006-09-29 2008-04-17 Olympus Digital System Design Corp マルチプロセッサ信号処理装置
US7836269B2 (en) * 2006-12-29 2010-11-16 Spansion Llc Systems and methods for access violation management of secured memory
JP4836878B2 (ja) * 2007-06-21 2011-12-14 株式会社東芝 画像識別表示装置及び画像識別表示方法
US8588253B2 (en) * 2008-06-26 2013-11-19 Qualcomm Incorporated Methods and apparatuses to reduce context switching during data transmission and reception in a multi-processor device
US8407427B2 (en) * 2008-10-29 2013-03-26 Silicon Image, Inc. Method and system for improving serial port memory communication latency and reliability
US20100216506A1 (en) * 2009-02-23 2010-08-26 Augusta Technology, Inc. System and Methods for Supporting Multiple Communications Protocols on a Mobile Phone Device
KR101111946B1 (ko) * 2009-12-17 2012-02-14 엠텍비젼 주식회사 촬상 장치, 이미지 시그널 프로세서 칩 및 칩 간의 메모리 공유 방법
JP5499987B2 (ja) * 2010-08-13 2014-05-21 富士通株式会社 共有キャッシュメモリ装置
US8635412B1 (en) * 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US8943330B2 (en) * 2011-05-10 2015-01-27 Qualcomm Incorporated Apparatus and method for hardware-based secure data processing using buffer memory address range rules
US8832478B2 (en) * 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
CN103139879B (zh) * 2011-11-28 2016-12-07 安凯(广州)微电子技术有限公司 一种无线个人局域网通信系统
WO2013095461A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Secure direct memory access
US9191823B2 (en) * 2012-06-29 2015-11-17 GSMK Gesellschaft für sichere mobile Kommunikation mbH Mobile device and method to monitor a baseband processor in relation to the actions on an applicaton processor
KR102011137B1 (ko) * 2012-12-07 2019-08-14 삼성전자주식회사 데이터 처리 장치와 회로
US9958933B2 (en) * 2015-06-04 2018-05-01 Apple Inc. Opportunistic waking of an application processor
KR102407917B1 (ko) * 2015-11-12 2022-06-10 삼성전자주식회사 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법
KR102650828B1 (ko) * 2016-05-20 2024-03-26 삼성전자주식회사 둘 이상의 프로세서에 의해 공유되는 메모리 장치 및 상기 메모리 장치를 포함하는 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100322419A1 (en) * 2007-07-03 2010-12-23 Nec Corporation Data encryption/decryption method and data processing device

Also Published As

Publication number Publication date
TW201719446A (zh) 2017-06-01
CN107015940A (zh) 2017-08-04
US20170139850A1 (en) 2017-05-18
KR20170055748A (ko) 2017-05-22
JP7042552B2 (ja) 2022-03-28
JP2017091543A (ja) 2017-05-25
CN107015940B (zh) 2021-12-21
TWI767893B (zh) 2022-06-21
DE102016121152A1 (de) 2017-05-18
US10185673B2 (en) 2019-01-22
US20200050560A1 (en) 2020-02-13
US10482042B2 (en) 2019-11-19
US20190108146A1 (en) 2019-04-11
US10949364B2 (en) 2021-03-16

Similar Documents

Publication Publication Date Title
KR102407917B1 (ko) 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법
US20230110230A1 (en) Technologies for secure i/o with memory encryption engines
TWI545436B (zh) 用於安全記憶體管理之積體電路及方法
US9152825B2 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
KR20150143708A (ko) 스토리지 디바이스 보조 인라인 암호화 및 암호해독
US20170272231A1 (en) Distribution of forwarded clock
CN111400732B (zh) 一种基于usb通道的加解密模块及设备
US10528746B2 (en) System, apparatus and method for trusted channel creation using execute-only code
CN115408707B (zh) 一种数据传输方法、装置、系统及电子设备和存储介质
JP2021508871A (ja) システムオンチップシステムのビット単位書き込み装置
GB2498359A (en) Application engine module with modem component.
WO2019196634A1 (zh) 数据处理方法及装置
CN117083612A (zh) 处置未对齐事务以用于内联加密
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치
WO2022036615A1 (en) Device channel protection mechanism
CN116561036B (zh) 数据访问控制方法、装置、设备及存储介质
US20220091758A1 (en) Securing sensitive data in memory
KR101267611B1 (ko) 고속무선통신모뎀에서 외부 장치에 저장된 펌웨어 실행 방법
KR20150145870A (ko) 채널별로 데이터를 보호할 수 있는 반도체 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant