KR20130101688A - 시스템 온 칩 및 이의 동작 방법 - Google Patents

시스템 온 칩 및 이의 동작 방법 Download PDF

Info

Publication number
KR20130101688A
KR20130101688A KR1020120022607A KR20120022607A KR20130101688A KR 20130101688 A KR20130101688 A KR 20130101688A KR 1020120022607 A KR1020120022607 A KR 1020120022607A KR 20120022607 A KR20120022607 A KR 20120022607A KR 20130101688 A KR20130101688 A KR 20130101688A
Authority
KR
South Korea
Prior art keywords
address
storage space
program code
processor
output
Prior art date
Application number
KR1020120022607A
Other languages
English (en)
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 KR1020120022607A priority Critical patent/KR20130101688A/ko
Publication of KR20130101688A publication Critical patent/KR20130101688A/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/217Input arrangements for video game devices characterised by their sensors, purposes or types using environment-related information, i.e. information generated otherwise than by the player, e.g. ambient temperature or humidity
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/58Controlling game characters or game objects based on the game progress by computing conditions of game characters, e.g. stamina, strength, motivation or energy level
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/65Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/825Fostering virtual characters

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Theoretical Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Ecology (AREA)
  • Environmental & Geological Engineering (AREA)
  • Environmental Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

SOC의 동작 방법은 주소변환기가 프로세서로부터 출력되고 불휘발성 메모리의 제1저장공간을 지시하는 제1어드레스를 수신하는 단계, 상기 주소변환기가 상기 제1어드레스와 휘발성 메모리의 제2저장공간을 지시하는 제2어드레스를 비교하는 단계, 비교 결과에 따라 상기 주소변환기가 상기 제1어드레스 또는 상기 제2어드레스를 출력하는 단계, 및 상기 프로세서가 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 제2프로그램 코드를 실행하는 단계를 포함할 수 있다.

Description

시스템 온 칩, 이를 포함하는 장치, 및 이의 동작 방법{SYSTEM ON CHIP, DEVICE INCLUDING THE SYSTEM ON CHIP, AND METHOD THEREOF}
본 발명의 개념에 따른 실시 예는 시스템 온 칩(System On Chip(SOC)) 동작 방법에 관한 것으로, 특히 주소변환기(Address Swap Function)을 이용하여 프로세서로부터 출력된 불휘발성 메모리의 저장공간을 지시하는 주소와 상기 주소변환기의 레지스터에 저장된 휘발성 메모리의 저장공간을 지시하는 주소를 교환(swap)하여 상기 휘발성 메모리의 저장공간에 포함된 상기 프로그램 코드를 실행하는 방법, 상기 방법을 수행할 수 있는 SOC, 및 이를 포함하는 장치에 관한 것이다.
디지털 데이터 처리 시스템, 예컨대 컴퓨터, 퍼스널 메디아 플레이어(예컨데, mp3 플레이어)은 램(Random Access Memory(RAM)) 및 롬(Read Only Memory(ROM))을 사용한다. 일반적으로 실행될 프로그램과 시스템의 동작에 필요한 데이터는 주로 상기 ROM에 저장한다. 상기 프로그램과 상기 데이터를 RAM에 저장하는 경우에는 상기 프로그램과 상기 데이터의 수정이 용이하지만, 상기 ROM을 사용하는 경우와 비교하여 볼 때, 시스템의 생산 비용이 증가한다. 따라서 시스템의 개발 단계에서는 상기 프로그램과 상기 데이터는 상기 RAM에 저장되고, 개발이 완료되면 상기 프로그램과 상기 데이터는 상기 ROM에 저장된다. 시스템의 개발이 완료되어 제품이 안정화된 이후에도 상기 ROM에 저장된 상기 프로그램 또는 상기 데이터에서 오류가 발생할 가능성이 있다. 또한, 상기 오류가 존재하지 않더라도 시스템의 성능 향상을 위하여 상기 프로그램과 상기 데이터를 수정하거나 업그레이드할 필요가 있다.
이 경우, 이미 제조된 제품을 폐기하고, 수정된 프로그램 코드 및 데이터를 저장한 ROM을 내장한 새로움 칩을 제조하는 것은 시간과 비용이 많이 소요되므로 비효율적이다. 따라서, ROM에 저장된 프로그램 코드 또는 데이터의 일부가 수정되어야 하는 경우, 이미 제조된 제품을 그대로 이용하면서 수정되어야 할 프로그램 코드 또는 데이터를 수정 프로그램 코드 또는 데이터로 대체할 수 있는 장치 및 방법이 요구된다.
ROM에 저장된 프로그램 코드를 대체하는 방법은 상기 ROM에 저장된 기존 프로그램 코드들과 관련해서 RAM 영역에서 순차적으로 실행되는 수정 프로그램 코드들의 주소들을 신경써야 할 필요가 있어 코드량의 증가로 속도가 지연될 수 있고, 이는 전체 시스템의 성능을 저하시키는 요인이 된다.
따라서, 시스템의 성능을 저하시키지 않고 프로그램 코드를 대체할 수 있는 장치 및 방법이 요구된다.
본 발명이 이루고자 하는 기술적인 과제는 주소변환기를 이용하여 휘발성 메모리의 저장공간에 포함된 프로그램 코드를 실행하는 방법, 상기 방법을 수행하는 SOC, 및 이를 포함하는 장치를 제공하는 것이다.
본 발명의 실시 예에 따른 SOC의 동작방법은 주소변환기가 프로세서로부터 출력되고 불휘발성 메모리의 제1저장공간을 지시하는 제1어드레스를 수신하는 단계, 상기 주소변환기가 상기 제1어드레스와 휘발성 메모리의 제2저장공간을 지시하는 제2어드레스를 비교하는 단계, 비교 결과에 따라 상기 주소변환기가 상기 제1어드레스 또는 상기 제2어드레스를 출력하는 단계, 및 상기 프로세서가 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 제2프로그램 코드를 실행하는 단계를 포함할 수 있다.
상기 불휘발성 메모리는 ROM이고, 상기 휘발성 메모리는 RAM일 수 있다.
상기 주소변환기는 상기 제1어드레스가 상기 제2어드레스와 동일하면 상기 제2어드레스를 상기 휘발성 메모리로 출력하고, 상기 제1어드레스가 상기 제2어드레스와 동일하지 않으면 상기 제1어드레스를 상기 불휘발성 메모리로 출력할 수 있다.
상기 주소변환기는 상기 제1어드레스와 상기 제2어드레스를 워드(word) 단위로 교환할 수 있다.
상기 제1프로그램 코드는 오리지널 코드이고 상기 제2프로그램 코드는 상기 오리지널 코드에 대한 패치 코드일 수 있다.
상기 SOC의 동작 방법은 상기 주소변환기가 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 경우 상기 프로세서는 상기 제2프로그램 코드에 연관된 상기 휘발성 메모리의 제3저장공간에 저장된 제3프로그램 코드를 실행하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 SOC는 프로세서, 제1저장공간을 포함하는 불휘발성 메모리, 제2저장공간을 포함하는 휘발성 메모리, 및 상기 프로세서로부터 출력되고 상기 제1저장공간을 지시하는 제1어드레스를 수신하고, 상기 제1어드레스와 상기 제2저장공간을 지시하는 제2어드레스를 비교하고, 비교 결과에 따라 상기 제1어드레스를 상기 불휘발성 메모리로 출력하거나 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 주소변환기를 포함하며, 상기 프로세서는 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 제2프로그램 코드를 실행할 수 있다.
상기 주소변환기는 상기 제2어드레스를 저장하는 레지스터, 상기 제1어드레스와 상기 레지스터로부터 출력된 상기 제2어드레스를 비교하고, 비교 결과에 따라 비교 신호를 생성하는 비교기, 및 상기 비교 신호에 기초하여 상기 제1어드레스를 상기 불휘발성 메모리로 출력하거나 또는 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 스위치를 포함할 수 있다.
상기 제2어드레스는 상기 프로세서에 의해 프로그램 가능할 수 있다.
본 발명의 실시 예에 따른 휴대용 장치는 SOC, 및 상기 SOC의 동작을 제어하는 호스트 프로세서를 포함하며, 상기 SOC는 프로세서, 제1저장공간을 포함하는 불휘발성 메모리, 제2저장공간을 포함하는 휘발성 메모리, 및 상기 프로세서로부터 출력되고 상기 제1저장공간을 지시하는 제1어드레스를 수신하고, 상기 제1어드레스와 상기 제2저장공간을 지시하는 제2어드레스를 비교하고, 비교 결과에 따라 상기 제1어드레스를 상기 불휘발성 메모리로 출력하거나 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 주소변환기를 포함하며, 상기 프로세서는 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 제2프로그램 코드를 실행할 수 있다.
상기 제2프로그램 코드는 상기 호스트 프로세서에 의해 업데이트될 수 있다.
본 발명의 실시 예에 따른 시스템의 동작 방법은 호스트 프로세서가 서버로부터 제2프로그램 코드를 수신하는 단계, 상기 호스트 프로세서가 상기 제2프로그램 코드를 휘발성 메모리에 저장하고, 상기 제2프로그램 코드가 저장된 상기 휘발성 메모리의 제2저장공간을 지시하는 제2어드레스를 주소변환기에 저장하는 단계, 상기 주소변환기가 프로세서로부터 출력되고 불휘발성 메모리의 제1저장공간을 지시하는 제1어드레스를 수신하는 단계, 상기 주소변환기가 상기 제1어드레스와 상기 제2어드레스를 비교하는 단계, 비교 결과에 따라 상기 주소변환기가 상기 제1어드레스 또는 상기 제2어드레스를 출력하는 단계, 및 상기 프로세서가 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 상기 제2프로그램 코드를 실행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 SOC의 동작 방법은 주소변환기를 이용하여 수정하거나 업그레이드할 필요가 있는 프로그램 블록의 첫번째 프로그램 코드의 주소만 교환하여 RAM에 저장된 수정 프로그램 코드를 실행할 수 있어 실행속도를 개선할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 SOC를 포함하는 시스템 블락도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 SOC의 동작 방법을 설명하기 위한 블락도를 나타낸다.
도 3은 도 2에 도시된 주소변환기의 기능을 설명하기 위한 블락도를 나타낸다.
도 4는 도 2에 도시된 주소변환기의 기능에 따른 ROM 또는 RAM에서의 프로그램 코드 실행을 설명하기 위한 블락도를 나타낸다.
도 5는 본 발명의 일 실시예에 따른 SOC를 포함하는 시스템의 동작 방법을 설명하기 위한 흐름도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 SOC를 포함하는 시스템 블락도를 나타낸다.
도 1을 참조하면, 시스템(10)은 서버(100), 휴대용 장치(200), 및 서버(100)와 휴대용 장치(mobile device; 200)를 연결하는 네트워크(110)를 포함할 수 있다. 휴대용 장치(200)는 호스트 프로세서(host processor; 210)와 SOC(230)을 포함할 수 있다. 휴대용 장치(200)는 모뎀, 휴대폰, mp3 플레이어, 네비게이션 일 수 있다.
호스트 프로세서(210)는 휴대용 장치(200)의 동작을 제어한다. 또한, 호스트 프로세서(210)는 네트워크(110)를 통해 서버(100)로부터 업데이트 데이터(upadte data; UDATA)를 수신하고, 업데이트 데이터(UDATA)를 SOC(230)에 포함된 휘발성 메모리(미도시), 예컨대 RAM(237)에 저장할 수 있다. 업데이트 데이터(UDATA)는 프로그램 코드 또는 데이터를 포함할 수 있다.
도 2는 본 발명의 일 실시예에 따른 SOC의 동작 방법을 설명하기 위한 블락도를 나타낸다.
도 2를 참조하면, SOC(230)는 프로세서(231), 주소변환기(233), ROM(235), RAM(237), 및 버스(239)를 포함할 수 있다.
프로세서(231)는 프로그램 카운터(Program counter; 미도시)를 포함할 수 있다. 프로세서(231)는 버스(239)를 통하여 SOC(230)의 동작을 제어할 수 있다. 프로세서(231)는 SOC(230)의 동작을 위해 필요한 여러 가지 연산을 수행하고, 버스(239)를 통하여 ROM(235)의 제1저장공간을 지시하는 제1어드레스(ADD1)를 주소변환기(233)로 출력할 수 있다. ROM(235) 또는 RAM(237)에 저장된 프로그램 코드(CODE1, CODE2 또는 CODE3)는 버스(239)를 통하여 프로세서(231)로 전송되어 실행될 수 있다.
프로그램 카운터는 메모리, 예컨대 ROM(235)에 저장된 프로그램 코드(CODE1)가 순차적으로 실행될 수 있도록 ROM(235)의 내용을 읽어온 후에 자동으로 실행 주소가 1씩 증가하여 다음 실행 주소를 가리킬 수 있다. 보다 구체적으로 프로세서(231)가 ROM(235)의 프로그램 코드를 실행시 상기 프로그램 코드의 주소는 순차적으로 증가하여 다음 프로그램 코드를 가지고 올 수 있도록 상기 프로그램 카운터에 저장될 수 있다.
주소변환기(233)는 프로세서(231)로부터 출력된 제1어드레스(ADD1)를 수신하고, 주소변환기(233)에 저장된 주소, 예컨대 RAM(237)의 제2저장공간을 지시하는 제2어드레스(ADD2)와 제1어드레스(ADD1)를 비교하고, 비교 결과에 따라 제1어드레스(ADD1)를 ROM(235)으로 출력하거나 제2어드레스(ADD2)를 RAM(237)으로 출력할 수 있다. 실시예에 따라 주소변환기(233)는 제1어드레스(ADD1)와 제2어드레스(ADD2)를 워드(word) 단위로 교환(swap)하여 출력할 수 있다. 실시예에 따라, 프로세서(231)는 제2어드레스(ADD2)를 프로그램할 수 있다.
ROM(235)은 한번 기록한 데이터를 빠른 속도로 읽을(read) 수 있지만, 다시 기록할 수 없는 불휘발성 메모리(non-volatile memory)이다. ROM(235)은 물리적으로 분리된 별개의 메모리일 수도 있으며, 하나의 메모리 내에 논리적으로 분할된 별개의 공간을 의미할 수도 있다. 예컨대, ROM(235)은 프로그램을 저장하는 프로그램 ROM과 데이터를 저장하는 데이터 ROM으로 분리된 별개의 메모리이거나, ROM(235)은 하나의 메모리 내에 논리적으로 프로그램을 저장하는 영역과 데이터를 저장하는 영역이 분할된 별개의 영역을 의미할 수도 있다. 주소변환기(233)가 제1어드레스(ADD1)를 ROM(235)으로 출력할 때, 상기 제1저장공간에 저장된 제1프로그램 코드(CODE1)는 버스(239)를 통하여 프로세서(231)로 전송되어 실행된다. 실시예에 따라, 제1프로그램은 오리지널 코드일 수 있다. 실시예에 따라 ROM(235)은 다른 불휘발성 메모리, 예컨대 플래시 메모리(flash memory)로 대체될 수 있다.
RAM(237)은 기록한 데이터를 읽을(read) 수 있고, 임의로 다른 데이터를 기록(write)하여 저장할(store) 수 있는 휘발성 메모리(volatile memory)이다. 주소변환기(233)가 제2어드레스(ADD2)를 RAM(237)으로 출력할 때, 상기 제2저장공간에 저장된 제2프로그램 코드(CODE2) 또는 제2프로그램 코드(CODE2)에 연관된 RAM(237)의 제3저장공간에 저장된 제3프로그램 코드(CODE3)는 버스(239)를 통하여 프로세서(231)로 전송되어 실행된다. 실시예에 따라, 제2프로그램 코드는 패치 코드일 수 있다. 실시예에 따라, RAM(237)은 다른 휘발성 메모리, 예컨대 DRAM으로 대체될 수 있다.
도 3은 도 2에 도시된 주소변환기의 기능을 설명하기 위한 블락도를 나타낸다.
도 3을 참조하면, 주소변환기(233)는 레지스터(301), 비교기(303) 및 스위치(305)를 포함할 수 있다.
레지스터(301)는 제2어드레스(ADD2)를 저장한다. 주소변환기(233)가 제1어드레스(ADD1)를 수신하는 때, 레지스터(301)는 제2어드레스(ADD2)를 비교기(303)로 출력할 수 있다.
비교기(303)는 프로세서(231)로부터 출력된 제1어드레스(ADD1)와 레지스터(301)로부터 출력된 제2어드레스(ADD2)를 수신하고, 제1어드레스(ADD1)와 제2어드레스(ADD2)를 비교하고, 비교 결과에 따라 비교 신호(SW)를 생성할 수 있다.
실시예에 따라, 제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일한 때 비교신호(SW)는 제1레벨, 예컨대 하이 레벨 또는 로직 1이고, 제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일하지 않은 때 비교신호(SW)는 제2레벨, 예컨대 로우 레벨 또는 로직 0일 수 있다.
스위치(305)는 비교기(303)로부터 출력된 비교 신호(SW)를 수신하여, 제1어드레스(ADD1)를 ROM(235)으로 출력하거나 또는 제2어드레스(ADD2)를 RAM(237)으로 출력할 수 있다.
실시예에 따라, 스위치(305)는 로직 1을 갖는 비교신호(SW)에 기초하여 제2어드레스(ADD2)를 RAM(237)으로 출력하고, 로직 0을 갖는 비교신호(SW)에 제1어드레스(ADD1)를 ROM(235)으로 출력할 수 있다.
즉, 주소변환기(233)는 제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일한 때 제2어드레스(ADD2)를 RAM(237)으로 출력하고, 제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일하지 않은 때 제1어드레스(ADD1)를 ROM(235)으로 출력할 수 있다.
도 4는 도 2에 도시된 주소변환기의 기능에 따른 ROM 또는 RAM에서의 프로그램 코드 실행을 설명하기 위한 블락도를 나타낸다.
도 2와 도 4를 참조하면, 프로세서(231)가 ROM(235)에 저장된 프로그램 코드를 순차적으로 실행하는 동안 함수 a(Func a)를 호출하는 코드(Call Func a)를 실행할 수 있다. 예컨대, 함수 a(Func a)는 다수의 프로그램 코드들(OPcode1, OPcode2, OPcode3,...,Return)을 포함할 수 있다.
함수 a(Func a)에 포함된 첫번째 프로그램 코드의 시작 주소, 예컨대 제1어드레스(ADD1)가 상기 프로그램 카운터에 로드(load)되고, 프로세서(231)는 제1어드레스(ADD1)를 버스(239)로 출력할 수 있다. 주소변환기(233)는 제1어드레스(ADD1)를 수신하고, 제2어드레스(ADD2)와 비교하고, 비교 결과에 따라 제1어드레스(ADD1) 또는 제2어드레스(ADD2)를 출력할 수 있다.
제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일하지 않은 때, 주소변환기(233)는 제1어드레스(ADD1)를 ROM(235)으로 출력할 수 있다. 제1어드레스(ADD1)가 ROM(235)으로 출력되고, 상기 제1저장공간에 저장된 제1프로그램 코드(Opcode1)가 프로세서(231)에 로드(load)되어 실행되고, 함수 a(Func a)에 포함된 다수의 프로그램 코드들(Opcode2,Opcode3,...,Return)이 순차적으로 로드(load)되어 실행될 수 있다.
프로세서(231)가 다수의 프로그램 코드(OPcode1, OPcode2, OPcode3,...,Return)들을 실행하는 동안 리턴 프로그램 코드(Return)를 실행하는 때, 프로세서(231)는 저장되어 있는 리턴 주소(return address)로 리턴(return)하고 상기 리턴 주소(return address)의 ROM(235)에 저장된 프로그램 코드(Call Func b)부터 순차적으로 실행할 수 있다.
제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일한 때, 주소변환기(233)는 제2어드레스(ADD2)를 RAM(237)으로 출력할 수 있다. 제2어드레스(ADD2)가 RAM(237)으로 출력되고, 상기 제2저장공간에 저장된 제2프로그램 코드(JMP Func B)가 프로세서(231)에 로드(load)되어 실행될 수 있다.
예컨대, 상기 프로그램 카운터에는 제1어드레스(ADD1)가 로드(load)되어 있고, 주소변환기(233)가 제2어드레스(ADD2)를 RAM(237)으로 출력함으로써 제2프로그램 코드(JMP Func B)가 프로세서(231)에 로드(load)되어 실행될 수 있다. 주소변환기(233)에 의해 제1어드레스(ADD1)가 제2어드레스(ADD2)로 교환(swap)되어 RAM(237)으로 출력되지만, 상기 프로그램 카운터에는 여전히 제1어드레스(ADD1)가 로드(load)되어 있다.
따라서, 제2프로그램 코드(JMP Func B)가 프로세서(231)에 로드(load)되어 실행된 이후, 순차적으로 RAM(237)에 저장되어 있는 프로그램 코드가 실행되는 것은 아니다.
즉, 상기 프로그램 카운터에는 제1프로그램 코드(OPcode1)의 다음 프로그램 코드(OPcode2, OPcode3,...,Return)의 주소가 순차적으로 로드되어 프로세서(231)는 제1프로그램 코드(OPcode1)의 다음 프로그램 코드(OPcode2, OPcode3,...,Return)를 실행할 수 있다.
하지만, 본 발명의 일 실시예에 따르면 상기 프로그램 카운터에는 제2프로그램 코드(JMP Func B)의 다음 프로그램 코드(OPcodeA, OPcodeB,...,Return)의 주소가 순차적으로 로드(load)되어 프로세서(231)는 제2프로그램 코드(JMP Func B)에 연관된 RAM(237)의 제3저장공간에 저장된 제3프로그램 코드(OPcodeA)를 실행할 수 있다.
예컨대, 제2프로그램 코드(JMP Func B)가 프로세서(231)로 로드(load)되고, 함수 B(Func B)에 포함된 다수의 프로그램 코드들(OPcodeA, OPcodeB,..., Return)의 주소를 상기 프로그램 카운터로 로드(load)하라는 명령이 실행되고, 함수 B(Func B)에 포함된 다수의 프로그램 코드들(OPcodeA, OPcodeB,..., Return)이 순차적으로 실행될 수 있다.
프로세서(231)가 다수의 프로그램 코드들(OPcodeA, OPcodeB, ...., Return)이 실행되는 동안 리턴 프로그램 코드(Return)를 실행하는 때, 프로세서(231)는 저장되어 있는 리턴 주소(return address)로 리턴(return)하고 상기 리턴 주소(return address)의 ROM(235)에 저장된 프로그램 코드(Call Func b)부터 순차적으로 실행할 수 있다.
즉, 프로세서(231)는 프로그램 코드에 점프 명령어(JMP)를 사용하여 수정하거나 업그레이드할 프로그램 코드 전체 또는 일부의 첫번째 프로그램 코드의 시작 주소만을 교환하여 RAM(237)에 저장된 수정 프로그램 코드 전체 또는 일부를 속도 저하나 기존 프로그램 코드와 관계없이 실행할 수 있다.
도 5는 본 발명의 일 실시예에 따른 SOC를 포함하는 시스템의 동작 방법을 설명하기 위한 흐름도이다.
호스트 프로세서(210)는 서버(100)로부터 업데이트 데이터(UDATA), 예컨데 제2프로그램 코드(CODE2)를 수신하고, 제2프로그램 코드(CODE2)를 RAM(237)의 상기 제2저장공간에 저장하고, 제2프로그램 코드(CODE2)가 저장된 상기 제2저장공간을 지시하는 제2어드레스(ADD2)를 주소변환기(233)에 저장할 수 있다(S100).
주소변환기(233)는 ROM(235)의 제1저장공간을 지시하는 제1어드레스(ADD1)를 수신하고(S120), 제1어드레스(ADD1)와 제2어드레스(ADD2)를 비교할 수 있다(S130). 비교 결과 제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일한 때 주소변환기(233)는 제2어드레스(ADD2)를 RAM(237)으로 출력할 수 있고(S131), 제1어드레스(ADD1)가 제2어드레스(ADD2)와 동일하지 않은 때 주소변환기(233)는 제1어드레스(ADD1)를 ROM(235)으로 출력할 수 있다(S133).
주소변환기(233)가 제1어드레스(ADD1)를 ROM(235)으로 출력한 때(S133), 프로세서(231)는 제1프로그램 코드(CODE1)를 실행할 수 있다(S135). 주소변환기(233)가 제2어드레스(ADD2)를 RAM(237)으로 출력한 때(S131), 제2프로그램 코드(CODE2)를 실행 또는 제2프로그램 코드(CODE2)에 연관된 RAM(237)의 제3저장공간에 저장된 제3프로그램 코드(CODE3)를 실행할 수 있다(S132).
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 시스템
100: 서버
200: 휴대용 장치
210: 호스트 프로세서
230: SOC
231: 프로세서
233: 주소변환기
235: 롬
237: 램
301: 레지스터
303: 비교기
305: 스위치

Claims (12)

  1. 주소변환기가 프로세서로부터 출력되고 불휘발성 메모리의 제1저장공간을 지시하는 제1어드레스를 수신하는 단계;
    상기 주소변환기가 상기 제1어드레스와 휘발성 메모리의 제2저장공간을 지시하는 제2어드레스를 비교하는 단계;
    비교 결과에 따라 상기 주소변환기가 상기 제1어드레스 또는 상기 제2어드레스를 출력하는 단계; 및
    상기 프로세서가 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 제2프로그램 코드를 실행하는 단계를 포함하는 SOC(Sytem On Chip)의 동작 방법.
  2. 제 1 항에 있어서,
    상기 불휘발성 메모리는 ROM이고,
    상기 휘발성 메모리는 RAM인 SOC의 동작 방법.
  3. 제 1 항에 있어서, 상기 주소변환기는,
    상기 제1어드레스가 상기 제2어드레스와 동일한 때, 상기 제2어드레스를 상기 휘발성 메모리로 출력하고,
    상기 제1어드레스가 상기 제2어드레스와 동일하지 않은 때, 상기 제1어드레스를 상기 불휘발성 메모리로 출력하는 SOC의 동작 방법.
  4. 제 1 항에 있어서,
    상기 주소변환기는 상기 제1어드레스와 상기 제2어드레스를 워드(word) 단위로 교환하는 SOC의 동작 방법.
  5. 제 1 항에 있어서, 상기 제1프로그램 코드는 오리지널 코드이고 상기 제2프로그램 코드는 상기 오리지널 코드에 대한 패치 코드인 SOC의 동작 방법.
  6. 제 3 항에 있어서, 상기 SOC의 동작 방법은,
    상기 주소변환기가 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 경우 상기 프로세서는 상기 제2프로그램 코드에 연관된 상기 휘발성 메모리의 제3저장공간에 저장된 제3프로그램 코드를 실행하는 단계를 더 포함하는 SOC의 동작 방법.
  7. 프로세서;
    제1저장공간을 포함하는 불휘발성 메모리;
    제2저장공간을 포함하는 휘발성 메모리; 및
    상기 프로세서로부터 출력되고 상기 제1저장공간을 지시하는 제1어드레스를 수신하고, 상기 제1어드레스와 상기 제2저장공간을 지시하는 제2어드레스를 비교하고, 비교 결과에 따라 상기 제1어드레스를 상기 불휘발성 메모리로 출력하거나 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 주소변환기를 포함하며,
    상기 프로세서는 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 제2프로그램 코드를 실행하는 SOC(System On Chip).
  8. 제 7 항에 있어서, 상기 주소변환기는,
    상기 제2어드레스를 저장하는 레지스터;
    상기 제1어드레스와 상기 레지스터로부터 출력된 상기 제2어드레스를 비교하고, 비교 결과에 따라 비교 신호를 생성하는 비교기; 및
    상기 비교 신호에 기초하여 상기 제1어드레스를 상기 불휘발성 메모리로 출력하거나 또는 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 스위치를 포함하는 SOC.
  9. 제 7 항에 있어서, 상기 제2어드레스는 상기 프로세서에 의해 프로그램 가능한 SOC.
  10. SOC ; 및
    상기 SOC의 동작을 제어하는 호스트 프로세서를 포함하며,
    상기 SOC는,
    프로세서;
    제1저장공간을 포함하는 불휘발성 메모리;
    제2저장공간을 포함하는 휘발성 메모리; 및
    상기 프로세서로부터 출력되고 상기 제1저장공간을 지시하는 제1어드레스를 수신하고, 상기 제1어드레스와 상기 제2저장공간을 지시하는 제2어드레스를 비교하고, 비교 결과에 따라 상기 제1어드레스를 상기 불휘발성 메모리로 출력하거나 상기 제2어드레스를 상기 휘발성 메모리로 출력하는 주소변환기를 포함하며,
    상기 프로세서는 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 제2프로그램 코드를 실행하는 휴대용 장치(Mobile Device).
  11. 제 10 항에 있어서,
    상기 제2프로그램 코드는 상기 호스트 프로세서에 의해 업데이트되는 휴대용 장치.
  12. 호스트 프로세서가 서버로부터 제2프로그램 코드를 수신하는 단계;
    상기 호스트 프로세서가 상기 제2프로그램 코드를 휘발성 메모리에 저장하고, 상기 제2프로그램 코드가 저장된 상기 휘발성 메모리의 제2저장공간을 지시하는 제2어드레스를 주소변환기에 저장하는 단계;
    상기 주소변환기가 프로세서로부터 출력되고 불휘발성 메모리의 제1저장공간을 지시하는 제1어드레스를 수신하는 단계;
    상기 주소변환기가 상기 제1어드레스와 상기 제2어드레스를 비교하는 단계;
    비교 결과에 따라 상기 주소변환기가 상기 제1어드레스 또는 상기 제2어드레스를 출력하는 단계; 및
    상기 프로세서가 상기 제1저장공간에 저장된 제1프로그램 코드 또는 상기 제2저장공간에 저장된 상기 제2프로그램 코드를 실행하는 단계를 포함하는 시스템의 동작 방법.
KR1020120022607A 2012-03-06 2012-03-06 시스템 온 칩 및 이의 동작 방법 KR20130101688A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120022607A KR20130101688A (ko) 2012-03-06 2012-03-06 시스템 온 칩 및 이의 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120022607A KR20130101688A (ko) 2012-03-06 2012-03-06 시스템 온 칩 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20130101688A true KR20130101688A (ko) 2013-09-16

Family

ID=49451712

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120022607A KR20130101688A (ko) 2012-03-06 2012-03-06 시스템 온 칩 및 이의 동작 방법

Country Status (1)

Country Link
KR (1) KR20130101688A (ko)

Similar Documents

Publication Publication Date Title
US9870148B2 (en) Configuration control system and configuration control method
US8572364B2 (en) Method and apparatus for booting from a flash memory
KR20040076589A (ko) 메모리 카드
US20140372668A1 (en) Data writing method, memory controller and memory storage apparatus
CN113468079B (zh) 内存访问方法及装置
CN101751277B (zh) 用于电子装置的数据处理与寻址方法及其电子装置
JP2004021990A (ja) プロセッサを含むコンピュータのファームウェア・セレクタ
US8667325B2 (en) Method, apparatus and system for providing memory sparing information
CN103617135B (zh) 一种存储设备中数据读取的方法及装置
US20130132659A1 (en) Microcontroller and method of controlling microcontroller
CN105630530A (zh) 数字信号处理器多级启动方法及系统
JP4703753B2 (ja) 情報処理装置、半導体記憶装置、及びプログラム
US7979606B2 (en) Method for storing data
JP2013246630A (ja) ブートシステムおよびシステム初期化方法
US8122205B2 (en) Structured virtual registers for embedded controller devices
KR20130101688A (ko) 시스템 온 칩 및 이의 동작 방법
CN104765626A (zh) 一种固件程序烧写方法及装置
US9632805B2 (en) Data storage device and error correction method thereof
US20180004419A1 (en) Methods and apparatus to read from a nonvolatile memory device
CN111158733A (zh) 一种bmc升级方法、装置、设备及计算机可读存储介质
US20130227343A1 (en) Circuits and Methods for Replacing Defective Instructions
JP2022522444A (ja) シーケンス処理ユニットを備えたメモリ制御システム
CN116880905B (zh) 一种数据存储方法、装置、存储介质及电子设备
US7870349B2 (en) Method for accessing memory
US9483399B2 (en) Sub-OS virtual memory management layer

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E601 Decision to refuse application